一、属性与成员变量
属性表达实例状态,描述类型对外结果,相比直接访问成员变量,属性可以做更多的控制。
默认情况下,编译器会为属性生成getter和setter方法以及一个成语变量。
1.当用户手动重写了set方法时,@property会生成get方法和带下划线的成员变量
2.当用户手动重写了get方法时,@property会生成set方法和带下划线的成员变量
3.当用户手动重写了set和get方法时.@property不会生成待下划线的成员变量
二、类方法
由类调用的方法
优势:不依赖对象,不占用内存空间
劣势:不能访问成员变量
三、动态类型检测
1).判断对象是不是指定类的对象或者指定类的子类对象.
- (BOOL)isKindOfClass:(Class)aClass;
2).判断对象是不是1个特定类型的对象,不包括子类. - (BOOL)isMemberOfClass:(Class)aClass;
3).判断1个类是不是另外1个类的子类.
- (BOOL)isSubclassOfClass:(Class)aClass;
4).判断对象中是否能响应指定的方法. 这个最常用.
- (BOOL)respondsToSelector:(SEL)aSelector;
5).判断类中是否能响应指定方法.
+(BOOL)instancesRespondToSelector:(SEL)aSelector;
四、关键字
nonatomic:非原子性,线程不加锁,性能高,安全性低.
atomic:原子性,线程加锁,性能低,安全性高.
retain:用于对象类型,生成set方法的内存管理代码.
assign:用于基本数据类型,不生成内存管理代码,直接进行赋值操作.
五、ARC中常见的所有权关键字
assign对应关键字__unsafe_unretained, 顾名思义,就是指向的对象被释放的时候,仍然指向之前的地址,容易引起野指针。
copy对应关键字__strong,只不过在赋值的时候,调用copy方法。
retain对应__strong
strong对应__strong
unsafe_unretained对应__unsafe_unretained
weak对应__weak。
六、@class与#import
import引入文件里面所有的内容,包括成员变量和方法.
@class仅仅告诉编译器,它修饰的是一个类而已.
七、有4个术语比较容易混淆:同步、异步、并发、串行
同步和异步主要影响:能不能开启新的线程
同步:只是在当前线程中执行任务,不具备开启新线程的能力
异步:可以在新的线程中执行任务,具备开启新线程的能力
并发和串行主要影响:任务的执行方式
并发:多个任务并发(同时)执行
串行:一个任务执行完毕后,再执行下一个任务