OC基础--关键字@property 和 @synthesize
一、@property关键字需要掌握的知识:
1.用在@interface中,用来自动生成setter和getter的声明
例:@property int age;--相当于执行了右边的代码-->-(void) setAge:(int) age; -(int) age;
二、@synthesize关键字需要掌握的知识:
1.用在@implementation中,用来自动生成setter和getter的实现
例:@synthesize age = _age;
2.注意:在 @synthesize age = _age; 中如果没有指定成员变量名,实现中默认访问的就是同名的成员变量
例: @synthesize age;//默认访问的就是age成员变量,而不是_age成员变量
如果age这个成员变量不存在,程序会在@implementation中自动生成一个私有的age变量
同理,如果指定的成员变量也不存在,程序也会在@implementation中自动生成一个私有的跟指定变量同名的成员变量
三、Xcode版本注意事项:
1.Xcode 4.4前:关键字@property 只是自动生成set方法和get方法的声明
2.Xcode 4.4后:关键字@property 将会自动生成set方法和get方法的声明和实现、增加一个_开头的成员变量
四、代码实例:
#import <Foundation/Foundation.h> @interface Car : NSObject
{
int _wheels;
//int _speed;
}
@property int wheels;
@property int speed;
@end @implementation Car
// 默认会访问wheels成员变量,如果这个成员变量不存在,自动生成一个私有的wheels变量
@synthesize wheels; // setter和getter会访问_speed成员变量,如果这个成员变量不存在,自动生成一个私有的_speed变量
@synthesize speed = _speed; - (NSString *)description
{
return [NSString stringWithFormat:@"wheels=%d,_speed=%d", wheels, _speed];
} @end int main()
{
Car *c = [[Car alloc] init]; c.wheels = 4;
c.speed = 250; NSLog(@"%@", c);
//NSLog(@"轮子个数:%d", c.wheels); return 0;
}
OC基础--关键字@property 和 @synthesize的更多相关文章
- OC开发系列-@property和@synthesize
property和synthesize 创建一个Person类.提供成员属性的_age和_height的setter和getter方法. #import <Foundation/Foundati ...
- OC语法5——@property和@synthesize
@property和@synthesize: 我们回想一下: 在OC中我们定义一个Student类需要两个文件Student.h 和 Student.m. Student.h(声明文件):定义成员变量 ...
- OC基础笔记目录
OC基础(1) Objective-C简介 OC和C对比 第一个OC程序 面向对象思想 OC基础(2) 类与对象 类的设计 第一个OC类 对象方法的声明和实现 类方法的声明和实现 OC基础(3) 对象 ...
- OC中两个关键字的作用:@property和@synthesize
两个关键字的使用:@property和@synthesize 一.@property关键字这个关键字是OC中能够快速的定义一个属性的方式,而且他可以设置一些值,就可以达到一定的效果,比如引用计数的问题 ...
- 五.OC基础--1.多态,2.类对象,3.点语法,4.@property&@synthesize,5.动态类型,内省(判断对象是否遵循特定的协议,以及是否可以响应特定的消息)
五.OC基础--1.多态, 1. 多态概念,定义:多态就是某一类事物的多种形态: 表现形式: Animal *ani = [Dog new]; 多态条件:1.有继承关系 2.有方法的重写 2.多态代码 ...
- OC基础--内存管理中的@property关键字以及其参数
在上一篇博客中整理的内存管理,管理类的代码量会感觉很大,而且如果对象多的话,感觉到代码有点冗余.下面就介绍Xcode中为我们自动生成内存管理代码的关键字@property 例如:在Person这个类中 ...
- Objective-C 点语法 成员变量的作用域 @property和@synthesize关键字 id类型
点语法 1.利用点语法替换set方法和get方法 方法调用 Student *stu = [Student new]; [stu setAge : 18]; int age = [stu age]; ...
- OC学习篇之---@property和@synthesize的使用
在之前一片文章我们介绍了OC中的内存管理:http://blog.csdn.net/jiangwei0910410003/article/details/41924683,今天我们来介绍两个关键字的使 ...
- OC基础--Property
编译器指令: 用来告诉编译器要做什么 @property: @property是编译器的指令 告诉编译器在@interface中自动生成setter和getter的声明 @synthesize: @s ...
随机推荐
- codeforces 711E E. ZS and The Birthday Paradox(数学+概率)
题目链接: E. ZS and The Birthday Paradox. time limit per test 2 seconds memory limit per test 256 megaby ...
- VA助手(Visual Assist X) 笔记
官方网站:http://www.wholetomato.com/ 一. 快捷键 Shift+Alt+F Find References 查找引用 Shift+Alt+S FindSynbolDialo ...
- 获取本机的IP地址(局域网)与主机名称
编写内容保存为bat @echo off &setlocal enabledelayedexpansion Rem '/*========获取本机的IP地址(局域网)=========*/ e ...
- IO流的练习3 —— 复制多级文件夹下的指定文件并改名
需求:复制指定目录下的指定文件,并修改后缀名. 指定的文件是:.java文件. 指定的后缀名是:.jad 数据源所在文件夹:C:\Users\Administrator\Desktop\记录 目的地所 ...
- C r and n(组合数)
找出n个数的r个数的组合,如下形式: 输入:n,r分别为 5, 3 输出: 5 4 3 5 4 2 5 4 1 5 3 2 5 3 ...
- vs2012无法启动已配置的开发Web服务器
] 有些教程说要开,我就没懂了
- [Usaco2008 Nov]mixup2 混乱的奶牛 简单状压DP
1231: [Usaco2008 Nov]mixup2 混乱的奶牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 685 Solved: 383[S ...
- Android 判断现在系统存储器是“手机存储”还是“SD存储”
import android.os.storage.StorageManager; String fileDir = null; StorageManager storageMa ...
- C语言 百炼成钢13
//题目37:将一个数组逆序输出.用第一个与最后一个交换. #include<stdio.h> #include<stdlib.h> #include<math.h> ...
- JS 模板引擎之JST模板
项目中有用到JST模板引擎,于是抽个时间出来,整理了下关于JST模板引擎的相关内容. 试想一个场景,当点击页面上列表的翻页按钮后,通过异步请求获得下一页的列表数据并在页面上显示出来.传统的JS做法是编 ...