知识点
UIButton 父类是谁?
UIControl
assign weak 修饰的区别?为什么用weak修饰对象,而不用assign
assign修饰基本数据,weak修饰对象
防止野指针出现
不使用KVO监听方法,如何手动触发对象的属性的变化
- (void)willChangeValueForKey:(NSString *)key
设置模型值 - (void)didChangeValueForKey:(NSString *)key
__block和__weak的区别
1.__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型。
2.__weak只能在ARC模式下使用,也只能修饰对象(NSString),不能修饰基本数据类型(int)。
3.__block对象可以在block中被重新赋值,__weak不可以。
4.__block对象在ARC下可能会导致循环引用,非ARC下会避免循环引用,__weak只在ARC下使用,可以避免循环引用。
为什么block中不能修改普通变量的值?
int val = __cself->val;
因为int val变量定义在栈上,,在block被调用时实际上已经被销毁,但是我们还可以正常访问这个变量,而这个变量的值实际上是__cself->val,__cself->val是截获的变量值的副本,要想修改在block之外定义的变量是不可能的。
__block的作用就是让变量的值在block中可以修改么?
使用__block变量修饰后,
__Block_byref_val_0 *val;
val是一个指针变量,因此可以访问修改block外的val变量。但是出现一个问题就是在arc模式下,__block修饰对象会出现循环引用的问题,因为对象会被强引用一次。非arc模式下则不会出现循环引用的问题。
谈谈你对runtime的理解,有哪些应用?
属性weak 实现原理
Runtime维护了一个weak表,用于存储指向某个对象的所有weak指针。weak表其实是一个hash(哈希)表,Key是所指对象的地址,Value是weak指针的地址(这个地址的值是所指对象的地址)数组。
网络、加密、锁,你可以自由发挥
招聘一个靠谱的iOS上
http://www.cocoachina.com/articles/12872
招聘一个靠谱的iOS下
https://www.jianshu.com/p/90dccd24f505
大小长度粗细不均的香,烧完都是1个小时,请问怎样才能确定是15分钟?
1.拿两根香,第一根两头同时点上,另一根指点一头
2.当第一根烧完的时候,正好过了半小时,从此刻开始计时,把另一个根香的另一头点上,烧完就是15分钟