属性 iOS笔记

来源:互联网 发布:宏观经济基础数据库 编辑:程序博客网 时间:2024/06/06 11:10

属性是Objective-C 2.0 引入的,提供了一种轻松地为类声明实例变量的方法,并让编译器自动生成存取方法。另外,属性还提供了一种通过限定符声明所有权的方式(无论是否使用ARC),编译器将根据指定的限定符生成争取的代码。

1.声明属性

属性是在类的接口中声明的。属性可在头文件(.h)中声明,这样的属性在外部可见;也可以在(.m)文件中声明,这样的属性只在当前的类的实例中可见。

编译器将根据指定的限定修饰符创建实例变量和标准的存取方法。

有6个与内存管理相关的限定符可用于属性。

# assign:这是非对象(例如 C语言类型BOOL或int)属性的默认设置。

# copy:

# retain:

# strong:

#  weak:

# unsafe_unretained:

区别:copy retain


除了上面内存管理限定符外,还可以给属性指定其他限定符,以指定存取方法的行为。

# readonly/readwrite:默认 设置为readwrite,让编译器为实例变量创建获取方法和设置方法。限定符readonly让编译器只生成获取方法。没有只生成设置方法的限定符。

# atomic/nonatomic:默认设置为atomic,命令编译器加锁,让属性能够同时被多个线程安全的访问。如果不需要这种加锁机制,可使用限定符nonatomic,让编译器不生成加锁代码。在这种情况下,将不能从多个线程安全地访问属性。

2.合成属性







0 0