知识点

作者: 狂浪的心 | 来源:发表于2021-02-26 14:01 被阅读0次

    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分钟

    相关文章

      网友评论

          本文标题:知识点

          本文链接:https://www.haomeiwen.com/subject/rxemfltx.html