美文网首页
日常开发笔记(一)

日常开发笔记(一)

作者: 善良的皮蛋 | 来源:发表于2021-10-26 11:50 被阅读0次
    1. __kindof

    __kindof关键字的理解

    一般结合泛型使用如@property (strong, nonatomic, readonly) NSMutableArray<__kindof VSMVVMCollectionViewSectionModel *> *sectionModels;表示数组可以包含model和model的子类

    2.@weakify(self)、 @strongify(self)

    参考讲解的很清楚,在block中使用,和我们日常使用的自定义weakSelf 、 strongSelf功能一样。

    注意:深入理解循环引用,有的并不会引起循环引用,要做区分。

    3. dealloc什么时候 调用
    - (void)dealloc; 
    

    什么时候回调用dealloc?
    1、这个类被release的时候会被调用;
    2、这个对象的retain count为0的时候会被调用;
    或者说一个对象或者类被置为nil的时候;

    //常用于移除通知等
    - (void)dealloc{
        //移除通知
        [[NSNotificationCenter defaultCenter] removeObserver:self name:NEP_NotificationName_PerOrdereAutoMatchStore object:nil];
    }
    
    4.内联函数 NS_INLINE

    内联函数的使用

    5.delegate修饰符

    1.对于strong
    该对象强引用delegate,外界不能销毁delegate对象,会导致循环引用(Retain Cycles)

    2.对于assing
    assign是指针赋值,不对引用计数操作,使用之后如果没有置为nil,可能就会产生野指针。

    @property (nonatomic, assign, readwrite) id delegate;
    即便delegate指向的对象销毁了,delegate中依然会保存之前对象的地址,即delegate成为了一个野指针

    3.对于weak:
    指明该对象并不负责保持delegate这个对象,delegate这个对象的销毁由外部控制。当delegate指向的对象销毁后,delegate = nil

    修饰代理delegateweak还是assign
    答案:使用weak

    6.关于NSNotificationCenter消息没有触发

    1,消息名用宏定义统一,消息名要在编译期就能确定,

    2,一定要保证先addObserver,再post,

    3,一定要确保post时还没有移除监听,

    4,一定要保证post时监听对象还存在
    在实际的开发过程中遇到过这样一个问题,首次打开app就无法在首页接受到通知,原因是在初始化添加通知之后 执行了下面代码

     [[NSNotificationCenter defaultCenter] removeObserver:self];
    

    移除了通知,第二次重新进入app不会执行该代码,所以就正常。真的细节决定成败。

    相关文章

      网友评论

          本文标题:日常开发笔记(一)

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