一、OC的四种修饰方式
1.assign
assign与weak都是弱引用。assign一般用于修饰非对象类型,如INT,数字等。
2.strong
return和strong都是强引用。
strong是用于自动释放的(苹果为你管理内存时)、
3.weak
assign与weak都是弱引用。weak修饰的是对象类型,防止其循环引用,比如需要调用delegate的时候,还有就是避免循环引用的时候。
4.retain
手动管理内存时使用。手动释放的时候使用retain,这个是在MRC时代用的(非常古早,现在已经都是ARC了)。
retain与release用于管理内存
5.copy
用copy修饰NSArray就代表数组是不可变的(一定要)。仅用于NSArray
如果说是NSMutableArray,就是使用strong,这代表一个数组是可变的。
例-NSArray用什么修饰?
用copy修饰NSArray就代表数组是不可变的。
二、_block的作用是为了防止循环引用的情况出现
三、Catagory分类
用途:Catagory一般来说就是给一些类拓展一些函数,比如说我可以给系统类来添加一些函数。
比如说可以给UIImage添加Catagory。就比如使用某些第三方库的时候,用UIImage,就可以使用一些不属于系统的方法。
创建方式:创建OC文件的时候,可以选择Catagory分类,来给对象添加扩展
不希望被子类继承的函数,也可以放在这里。
四、OC中方法的消息转发机制
方法就是函数
根据指针,找到它的实例地址,然后再实例存放的地址信息中找到MethodList,然后去循环遍历它。如果没有找到,就去类对象里面找这个MethodList,如果都找不到,则重复刚才的操作,向它的父类寻找。如果依然找不到,就向他更大的父类,一直找到NSObject为止,如果一直没有的话,程序会立刻崩溃。
五、点击事件传递机制主要依赖类的哪两个方法名去实现?
hitTest与pointInside
六、在主线程里使用sync开辟主线程是会立即执行的,会导致程序直接崩溃。
如果用async去异步开辟的话,就可以避免线程阻塞的情况出现。
七、UI卡顿的原因
常出现于APP同一时间加载了过多的页面,或者是在同一时间进行了大量的计算。解决方式非常简单,就是把计算工作放在支线程中,在执行完毕的时候再刷新UI就可以避免这个问题出现。