标签:ios object-c
声明property语法为@property(参数1,参数2,参数3)类型 名字;
例如:@property (assign)int age;
相当于定义了下面俩个方法:
- (int) age;
- (void) setAge:(int)newAge;
在实现文件.m中我们只要添加如下一行代码:
@systhesize age;
就相当于实现了.h文件中的get和set方法。
属性关键字:
@property后面的()内可以配置一些参数,下面给出可配置的参数:
1、读写属性:即控制了属性是否存在设置器的方法。这些参数之间是互斥的。
Readwrite(默认):表明属性是可读写的。
Readonly:只读。
2、setter语意:
Assign(默认):一般用来处理基础类型,默认的。
Copy:指定应该使用对象的副本,前一个值发送一条release消息。基本上像retain,但是没有增加引用计数,是分配一块新的内存来放置它。在进行设置的时候,使用copy来复制参数,对原值进行release。
推荐做法:NSString用copy,delegate用assign(一定要用assign),其他对象类型用retain,基本数据类型用assign(默认的)。
3、原子性控制:
Atomic(默认):为了保证多线程情况下编译器会自动生成一些互斥加锁代码,避免该变量的读写不同步。
Nonatomic:不提供对多线程的保护,如果该对象无需考虑多线程情况。
推荐:一般都可以使用nonatomic参数。
4、strong和weak
Strong和weak是ios5中由ARC(自动内存管理机制)引入的新的对象变量属性。
Strong:用来修饰引用的属性。
@property(strong) Myclass *myobject;
相当于
@property(retain) Myclass *myobject;
Weak:用来修饰弱引用的属性,当弱引用的对象被释放后,该对象将被自动赋予nil值。
@property(weak) Myotherclass *delegate;
相当于
@property(assign) Myotherclass *delegate;
强引用和弱引用的区别在于:强引用也就是我们通常所讲的引用,其存亡直接决定了所指对象的存亡。如果不存在指向一个对象的引用,并且此对象不再显示于列表中,则此对象会被从内存中释放。弱引用除了不决定对象的存亡外,其他与强引用相同。
标签:ios object-c
原文地址:http://blog.csdn.net/ccq1029/article/details/42564521