美文网首页
Objective-C 属性特性

Objective-C 属性特性

作者: 西风那个吹呀吹 | 来源:发表于2017-06-09 10:17 被阅读17次

    @property 特性分为三类:原子性、存取器控制、内存管理。

    原子性

    • atomic 指定属性的原子操作是线程安全的,类似锁,只有一个线程访问实例变量,默认限定符,可缺省。
    • nonatomic 指定属性的原子操作是线程不安全的,可提高访问速度,非多线程时访问数据时建议使用。

    存取器控制

    • readwrite 指定属性可读可写,默认限定符,可以省略不写。
    • readonly 指定属性只读,没有 setter 方法。
      有时候为了语意更明确,可以自定义访问器的名字,如
    @property (nonatomic, setter=changeName:, getter=fullName) NSString *name;
    
    //应用:
    [self changeName:@"jack"];
     NSLog(@"%@",[self fullName]);//打印:jack
    

    最常见的是运用于 Bool 类型,如下声明一个隐藏属性:
    @property (nonatomic,getter = isHidden ) BOOL hidden;

    内存管理

    • strong 强引用关系,即拥有对象的所有权,对象的 returnCount + 1,默认限定符,可缺省。
    • weak 弱引用关系,即对引用的对象没有所有权,当引用计数为零时,也就是对象释放后,weak 修饰的变量置为 nil。
    • copy 与 strong 类似,区别是对传入对象的副本拥有所有权,非对象本身。
    • assign 表示直接赋值,主要用于基本数据类型,如 int等。也包括不存在所有权关系的对象,如 delegate。

    相关文章

      网友评论

          本文标题:Objective-C 属性特性

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