@property与内存管理以及可传参数

来源:互联网 发布:网络销售合同 编辑:程序博客网 时间:2024/06/08 17:06

1.在用@property声明的时候传入retian这个参数

@property (retain)Book *book;  

//代表该成员变量会进行内存管理也就是在编译的时候会在.m文件中生成如下代码,先release旧的,再retain新的

-(void)setBook:(Book *)book{

    if(_book!=book){

        [_book release];

        _book=[book retain];

    }

}


2.assign默认就是assign表示赋值也就是setter,可以省略

@property (assign)int age;

3.readwrite/readonly,默认readwrite表示可读可写生成setget方法,也可以省略,如果是readonly就代表只提供Getter方法

@property (readwrite)int age;4.atomic/nonatomic 默认是atomic,表示支持线程安全,会加锁,提供线程保护技术,耗费系统资源,而在IOS开发中因为内存有限,所以大多数时候我们不需要考虑线程安全问题,应该提高应用的性能。

@property (nonatomic)int age;

5.指定方法名称,常用于Bool类型,提高代码的可读性

@property (nonatomic,getter = isDelete)BOOL isDelete;//表示生成get方法的时候方法名是isDelete


注意:不能对一个基本数据类型使用retain参数,这样编译器就会报错,因为基本数据类型不支持内存管理。



0 0
原创粉丝点击