黑马程序员_OC基础11_@property参数

---------------------------------------- android培训java培训、期待与您交流! ----------------------------------


PS:上一篇博客详细讲了OC 内存管理的细节,但是以前的内存管理都用很多重复的垃圾代码,使用@property的retain参数,即可省略set方法里面手动对对象的计数器操作。


一、property参数说明(需要熟记掌握)

 1.set方法内存管理相关的参数
 * retain : release旧值,retain新值(适用于OC对象类型
 * assign : 直接赋值(默认,适用于非OC对象类型
 * copy   : release旧值,copy新值


 
 2.是否要生成set方法
 * readwrite : 同时生成setter和getter的声明、实现(默认)
 * readonly  : 只会生成getter的声明、实现


 
 3.多线程管理
 * nonatomic : 性能高 (一般就用这个);禁止多线程,变量保护,提高性能
 * atomic    : 性能低(默认)


 
 4.setter和getter方法的名称
 * setter : 决定了set方法的名称,一定要有个冒号 :
 * getter : 决定了get方法的名称(一般用在BOOL类型)



eg:代码示例

@interface Person : NSObject


// 返回BOOL类型的方法名一般以is开头,把默认的get方法(rich)改成isRich,但成员变量还是不变,还是_rich
@property (getter = isRich) BOOL rich;

//参数属性:高性能,int数据类型成员变量,可读可写
@property (nonatomic, assign, readwrite) int weight;
// setWeight:
// weight

// 参数属性:低性能(默认atomic),可读可写,int数据类型成员变量
@property (readwrite, assign) int height;
// 参数属性:高性能,int数据类型成员变量
@property (nonatomic, assign) int age;
// 参数属性:字符串对象成员变量,需要进行内存管理
@property (retain) NSString *name;@end



二、补充@property配合@synthesize的用法

@property是Objective-C语言关键词,与@synthesize配对使用。xcode4.5以及以后的版本,@synthesize可以省略
功能:让编译器自动编写一个与数据成员同名的方法声明来省去读写方法的声明。

1、在头文件(.h)中:

@property int age;
等效于在头文件中声明2个方法:
- (int)count;
-(void)setCount:(int)newCount;

2、实现文件(.m)中

@synthesize count;

等效于在实现文件(.m)中实现2个方法。

- (int)count
{
return count;
}
-(void)setCount:(int)newCount
{
count = newCount;
}
PS:以上等效的函数部分由编译器自动帮开发者填充完成,简化了编码输入工作量。



-------------------------------------- android培训java培训、期待与您交流! ------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值