美文网首页
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