self的概念:指向了当前对象(方法的调用者)
self的用途
- 可以利用 self -> 成员变量名 访问当前对象内部的成员变量
- [self 方法名]; 调用其他对象方法或者类方法
所有继承自NSObject的类都有一个成员变量 isa 指针类型 它指向对象所在类的父类
class isa;
class 修饰,因为typedef重命名过,所以虽然是指针类型但是不带*
#import<> 框架(一般是系统自带的都是引入框架)
#import" " 头文件 可以多次导入而不出错
#include" " 不可以多次导入而不出错
线程:执行任务的单元(类似车间)
程序中的线程:
- 单线程:当进行下电影的任务后就干不了别的,需要按顺序进行任务。
- 多线程:分线程后在进行下电影的任务的同时也可以进行听音乐的任务。
发现问题:在多线程的情况下,可能出现多条线程同时去访问同一个实例变量,这样就会出错
解决方法:为实例变量加锁atomic,使用atomic修饰就能保证实例变量每次只能被一条线程访问,也是属性的属性 原子性,默认加锁atomic
注意:实际开发中我们其实多用noatomic,是因为atomic加锁再解锁会消耗性能,而且出现多个线程同时访问同一个实例变量的情况几率很小