assign:修饰基本数据类型 (int、 float、double、char、NSInteger、CGFloat、BOOL等)
copy:修饰NSString
retain/strong:修饰其他对象类型
•iOS5之前用assign、copy、retain等关键字修饰属性,iOS5之后引入了ARC,提出了新的关键字strong、weak。相对而言,weak相当于assign(基本一致),strong相当于retain(完全一致)。
•引用计数:在OC中每个对象内部都有一个与之对应的整数(retainCount),叫“引用计数”。当一个对象在创建之后它的引用计数为1;当调用这个对象的alloc、retain、new、copy方法之后引用计数自动在原来的基础上加1(OC中调用对象的方法就是给这个对象发送一条消息);当调用这个对象的release方法之后它的引用计数减1;如果一个对象的引用计数为0,系统会自动调用这个对象的dealloc方法来销毁这个对象。
对象操作 | Objective-C方法 | 引用计数 |
---|---|---|
生成并持有对象 | alloc/new/copy/mutablecopy | 1 |
持有对象 | retain方法 | +1 |
释放对象 | release | -1 |
废弃对象 | dealloc | 0 |