美文网首页iOS基本功
【iOS】属性关键字

【iOS】属性关键字

作者: an_Anthony | 来源:发表于2019-04-26 21:39 被阅读10次

    属性(property)是Objective-C封装对象数据的一个重要特性。声明一个属性要加上特定的关键字。不同关键字修饰的属性在内存管理中有不一样的结果。

    下面是Objective-C中常用关键字的含义。

    strong:指向并拥有该对象。其修饰对象引用计数会增加1.只要引用计数不为0,该对象就不会销毁。可以手动设为nil销毁该对象。

    retain:在ARC中与strong类似。

    weak:指向但不拥有该对象。其修饰的对象引用计数不会增加,weak修饰的对象消失后会自动将指针设为nil,主要用来避免循环引用。

    copy:建立一个和新对象内容相同且引用计数为1的对象,指针指向这个对象并释放之前的旧对象。有对应可变数据类型的不可变数据类型都应该用copy来修饰,例如NSString、NSArray、NSDictionary。

    assign:修饰基本数据类型,例如NSInteger、CGFloat。这些数值都存在栈中。assign如果用来修饰对象会造成野指针。

    atomic:原子性,保证setter和getter的完整性。但不是绝对的线程安全。可以用@synchronized加锁。

    nonatomic:不保证setter和getter。

    基本数据类型的默认关键字为:atomic、readwrite、assign

    普通属性的默认关键字为:atomic、readwrite、strong

       

    相关文章

      网友评论

        本文标题:【iOS】属性关键字

        本文链接:https://www.haomeiwen.com/subject/vglcnqtx.html