@property(属性)
属性是对成员变量setter和getter的封装。
特性关键字
1. 原子性
atomic 存取方法是原子性的
nonatomic 存取方法是非原子性的
2. 读写权限
readwrite 可读可写(生成setter和getter)
readonly 只读(只生成setter方法)
3. 内存管理
assign:基本数据类型的赋值操作(不使用引用计数,如果用来修饰NSObject属性,会产生野指针。)
strong:对象强引用,setter方法有内存计数的代码
retain: 同 strong
weak:对象弱引用,对象销毁时会将实例变量的值致为nil
unsafe_retain:弱引用,对象销毁时不清空实例变量的值
copy:设置新值时拷贝
4. 指定方法名
getter=<name>
setter=<name>
@dynamic和@synthesize
首先@表示当前使用的OC代码。
@property有两个对应的词,一个是@synthesize,一个是@dynamic。
@dynamic告诉编译器,不要自动创建实现属性所用的实例变量,也不要为其创建存取方法。
@synthesize用来指定实例变量的名字。
如果@synthesize和@dynamic都没写,那么默认的就是@synthesize var = _var;
Category分类
可以给类添加方法,重写类的方法。可以写在任意文件中。
Extention类扩展
匿名分类,可给类添加属性和方法。
网友评论