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继承时方法没有重载只要重写

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容