摘要:
本条要点:(作者总结) 在创建对象时,可以使用内联的 handler 块将相关业务逻辑一并声明。 在有多个实例需要监控时,如果采用委托模式,那么经常需要根据传入的对象来切换,而若改用 handler 块来实现,则可直接将块与相关对象放在一起。 设计 API 时如果用到了 handler 块,那么可以 阅读全文
摘要:
本条要点:(作者总结) 以 typedef 重新定义块类型,可令块变量用起来更加简单。 定义新类型时应遵从现有的命名习惯,勿使其名称与别的类型相冲突。 不妨为同一个块签名定义多个类型别名。如果要重构的代码使用了块类型的某个别名,那么只需要修改相应 typedef 中的块签名即可,无须改动其他 typ 阅读全文
摘要:
第6章 block 与 GCD 当前在开发应用程序时,每位程序员都应该留意多线程问题。你可能会说自己要开发的应用程序用不到多线程,即便如此,它也很可能是多线程的,因为系统框架通常会在 UI 线程之外再使用一些线程来执行任务。开发应用程序时,最糟糕的事情莫过于程序因 UI 线程阻塞而挂起了。在 Mac 阅读全文
摘要:
本条要点:(作者总结) 对象的保留计数看似有用,实则不然,因为任何给定时间点上的“绝对保留计数”(absolute retain count)都无法反映对象生命期的全貌。 引入 ARC 之后,retainCount 方法就正式废止了,在 ARC 下调用该方法会导致编译器报错。 Objective-C 阅读全文
摘要:
本条要点:(作者总结) 系统在回收对象时,可以不将其真的回收,而是把它转化为僵尸对象。通过环境变量 NSZombieEnable 可开启此功能。 系统会修改对象的 isa 指针,令其指向特殊的僵尸类,从而使该对象变为僵尸对象。僵尸类能够相应所有的选择子,响应方式为:打印一条包含消息内容及其接收者的消 阅读全文