GeekBand-网易云课堂IOS微专业-Objc1Week笔记

编译objc主要是用clang + LLVM

clang做前端 llvm优化代码 llvm产生机器码

要尽量画内存图

值类型跟随实例在栈中,引用是在堆中

属性是对外可以被访问的,编译器可以自动产生get set方法 属性本身还有一些修饰符可以定义读写等性质

同时编译器可以产生出一个对应的实例变量_加property的名字

objc的实例方法都是公用的,但是如果在实现中放入方法,则相当于java中的private了

objc方法是动态调用的,即内存的实例结构中有指向一个methodList中的指针,methodList中又保存了方法入口的指针

对象初始化器可以有多个,类型初始化器只能有一个 析构器只能有一个 new 相当于调用了alloc/init的无参版本

类型初始化是一个进程周期内部只会调用一次,这是规则,如果自己实现了类型初始化,则如果没有判断self == 当前的类型

则会被执行两次逻辑 子类的类型初始化器会自动调用父类的初始化器

继承时尽量避免在父类init和dealloc方法中调用子类重写的方法

objc继承时方法没有重载只要重写

你可能感兴趣的:(GeekBand-网易云课堂IOS微专业-Objc1Week笔记)