美文网首页
Effective Objective-C 2.0笔记(六)Bl

Effective Objective-C 2.0笔记(六)Bl

作者: 孔朝阳 | 来源:发表于2019-02-02 21:56 被阅读0次

    三十七、理解块这一概念

    1、returnType (^blockName) (parameters)

    2、在声明block的范围里,所有变量都可以为其所捕获,而被其捕获的变量不可以在block里修改

    3、如果block所捕获的变量是对象类型会自动保留

    4、如果block通过读取或写入操作捕获了实例变量,那么也会自动把self变量捕获

    5、block在捕获self时会将其保留,如果self所指对象也保留了block,则产生保留环

    三十八、为常用的块类型创建typedef

    三十九、用handler块降低代码分散程度

    1、建议使用同一个块处理成功和失败情况。

    四十、用块引用其所属对象时不要出现保留环

    四十一、多用派发队列,少用同步锁

    1、@synchronized(self){}会自动创建锁,等待块中的代码执行完毕再释放锁。

    2、使用派发队列比@synchronized或NSLock更简单高效

    3、执行异步派发时,需要拷贝块

    4、在队列中,栅栏块必须单独执行,不能与其他块并行

    5、使用同步队列及栅栏块,可以令同步行为更高效

    四十二、多用GCD,少用performSelector系列方法

    1、performSelector系列方法在内存管理方便容易出错,ARC编译器很难插入适当的内存管理方法。

    四十三、掌握GCD及操作队列的使用时机

    四十四、通过Dispatch Group机制,根据系统资源状况来执行任务

    四十五、使用dispatch_once来执行只需运行一次的线程安全代码

    1、单例模式(singleton)常见实现方式sharedInstance中为保证线程安全,需添加同步锁,可以选择使用dispatch_once。

    四十六、不要使用dispatch_get_current_queue

    相关文章

      网友评论

          本文标题:Effective Objective-C 2.0笔记(六)Bl

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