@property 修饰符

2017-05-11  本文已影响0人  三三At你

@property 修饰符

修饰符的作用都是针对系统生成的getter、setter方法,对于自定义getter、setter的对象只能起到参考的作用,直接使用(_变量名)同样不受关键字的影响。

关键字 基本类型 Objective-C对象 Block Core Foundation对象
assign
weak
strong √(=copy)
retain √(warning)
copy
atomic
noatomic

注:对于Objective-C对象,Block,strong为默认修饰符,其他类型默认用assign修饰,assgin,strong不可共存。

基本类型int,float,double等

  1. 基本类型不受ARC管理,由系统自动回收栈内存。
  2. 用assign作为属性默认值,即getter、setter不做任何多余处理。
  3. 默认支持线程保护,保护getter、setter的完整性。

Objective-C对象

  1. Objective-C对象受到ARC管理,根据引用计数自动回收内存。
  2. assign与weak
  1. strong与retain
  1. copy
NSMutableArray *a = [[NSMutableArray alloc]init];
NSMutableArray *b = [a copy];
@property (copy) NSString *copyStr;
NSMutableString *mStr = [NSMutableString stringWithString:@"string"];
self.copyStr = self.mStr;
[self.name2 appendString:@"11122"];
  1. 默认支持线程保护,保护getter、setter的完整性。

Block

  1. Block受到ARC管理,但于Objective-C对象有所不同,由系统自动回收内存。

  2. 虽然上面的修饰符都可以用并且通过编译,但retain会出现警告,提示用copy替换。

  1. assign,weak,retain,strong,copy

Core Foundation对象

  1. Core Foundation对象不受ARC管理,需要使用CFRetain CFRelease手动管理内存。
  2. 用assign作为属性默认值
  3. 默认支持线程保护,保护getter、setter的完整性。
上一篇 下一篇

猜你喜欢

热点阅读