iOS内存管理关键字

ARC

关键字

copy
复制内容(深复制),如果调用copy的是数组,则为指针复制(浅复制),仅仅复制子元素的指针。

assign
对基础数据类型(NSInteger,CGFloat)和C数据类型(int, float, double, char等)

strong
相当于retain。strong在ARC环境为默认属性类型。

** retain**
NSObject及其子类。
Release旧值,retain新值。
Retain是指针复制(浅复制),引用计数加1,而不会导致内容被复制。
** weak**
取代之前的assign,对象销毁之后会自动置为nil,防止野指针。
Assign不能自动置为nil,需要手动置为nil。
Delegate基本总是使用weak,以防止循环引用。特殊情况是,希望在dealloc中调用delegate的某些方法进行释放,此时如果使用weak将引起异常,因为此时已经是nil了,那么采用assign更为合适。

** readonly**
此标记说明属性是只读的,默认的标记是读写,如果你指定了只读,在@implementation中只需要一个读取器。或者如果你使用@synthesize关键字,也是有读取器方法被解析。而且如果你试图使用点操作符为属性赋值,你将得到一个编译错误。

readwrite
此标记说明属性会被当成读写的,这也是默认属性。设置器和读取器都需要在@implementation中实现。如果使用@synthesize关键字,读取器和设置器都会被解析。

unsafe_unretained
unretained且unsafe,由于是unretained所以与weak有点类似,但是它是unsafe的.

区别

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Cocoa内存管理机制 (1)当你使用new、alloc、copy方法创建一个对象时,该对象的保留计数器值为1.当...
    John_LS阅读 2,833评论 0 6
  • //联系人:石虎QQ: 1224614774昵称:嗡嘛呢叭咪哄 OC关键字:copy,assign,strong,...
    石虎132阅读 1,648评论 2 24
  • 1,带有强烈目的性去看书,要知道需要解决什么问题。 2,对解决的问题进行无限反驳和想想是否还有第三种方法实现,反驳...
    freesan44阅读 215评论 0 0
  • 物冬衫 旷野天湛蓝 阵阵鸟雀私语谈 寺院边 游鱼喜清闲 寞寞人烟无青山 大雪寒 一夜月孤单 幽幽还把星子盼 201...
    龙青阅读 269评论 1 8
  • 朱茵说“当你照镜子时,感觉自己越来越美了,那就是找对人了” 时隔20多年,提起“至尊宝”,她的眼里分明还有泪水。 ...
    Anne斑马斑马阅读 157评论 0 0