1.const
const修饰的是其右侧的内容const修饰的是只读的,const *修饰的是指针,所以指针是常量,指针不能动,但是值却可以修改举例如下
NSString const *str = @"原始值";
str = @"值可以更改";
* const修饰的值,值不可以变.这个时候是无法修改的
2.isa的指向
每个类都有自己的元类,会向上寻找自己的父类的元类
对象的isa指向类
类的isa指向元类meta-class
元类isa指向根元类
根源类isa指向自己
3.Block的实质是OC对象,他的类是_NSConcreteStackBlock
4.Block截获自动变量
截获自动变量的值本质是将自动变量值添加到block的结构体中(不使用__block修饰的情况)
使用__block后自动变量会被包装成struct,放到block中可以修改值
5.Block
block本质会转换为block的结构体类型的自动变量,__block变量转换为__block变量的结构体类型的自动变量
6.GCD
GCD的Block不需要担心循环引用,是由于GCD是函数不是方法,函数是属于文件不属于类,不会被持有,所以不需要担心循环引用的问题.
GCD全集
7.协议和继承
使用协议比用继承更好,详情待续.
8.GCD相关
认真区分并行和串行,异步和同步,他们是不同的东西,并行和串行是相对于队列而言的,异步和同步是相对于线程的
网友评论