23 通过委托与数据源协议进行对象间通信

总结:委托模式的常规委托模式中,信息从类Class流向受委托者delegate。数据源模式,信息从数据源datasource流向class。数据源和受委托者可以是两个不同对象。有时候一个可选择方法可能在一个生命期中多次调用,如果每次都检查委托对象是否能响应选择子,那就显得多余了。可以使用位段(bitfield)数据类型将方法响应能力缓存起来。

24 将类的实现代码分散到便于管理的数个分类之中

总结:易于管理,便与调试。将应视为“私有”的方法归入名为Private的分类中,以隐藏实现细节。使用分类机制把类的实现代码划分成易于管理的小块。(具体)

25 总是为第三方类的分类名称加前缀

总结:向第三方类中添加分类时,总应给其名称和其中的方法名加上专用前缀。分类中晚加载的方法会覆盖先加载的同名方法。(具体)

26 勿在分类中声明属性

总结:属性是封装数据的方式,除了class-continuation分类之外,其他分类都无法向类中新增实例变量,因此,无法把实现属性所需的实例变量合成出来。应将分类机制理解为一种手段,目的在于扩展分类的功能,而非封装数据。要把数据所用的全部属性都定义在主接口中。在class-continuation分类之外的其他分类中,可以定义存取方法,但尽量不要定义属性。

27 使用class-continuation分类隐藏实现细节

总结:编写OC++代码时“class-continuation分类”也尤为有用。oc++是oc与c++的混合体,其代码可以用这两种语言来编写。由于兼容性原因,游戏后端一般用c++来写。另外有时候要使用的第三方库可能只有c++绑定,此时也必须使用c++编码。通过class-continuation分类向类中新增实例变量。如果某属性在主接口中声明为“只读”,而类的内部又要用设置方法修改此属性,那么就在class-continuation分类中将其扩展为“可读写”。把私有方法的原型声明在class-continuation分类里面。若想使类所遵循的协议不为人所知,则可于class-continuation分类中声明。

28 通过协议提供匿名对象

总结:协议可在某种程度上提供匿名类型id。具体的对象类型可以淡化成遵从某协议的id类型,协议里规定了对象所应实现的方法。使用匿名对象来隐藏类型名称(或类名)。如果具体类型不重要,重要的是对象能够响应特定方法,那么可使用匿名对象来表示。对于字典来说,键的标准内存管理语义是设置时拷贝,而值得语义则是设置时保留。

- (void)setObject:(id)object forKey:(id<NSCopying>)key;

effective OC2.0 52阅读笔记(四 协议与分类)的更多相关文章

  1. effective OC2.0 52阅读笔记(七 系统框架)

    47 熟悉系统框架 总结:将代码封装为动态库,并提供接口的头文件,就是框架.平时的三方应用都用静态库(因为iOS应用程序不允许在其中包含动态库),并不是真正的框架,然而也经常视为框架.例如:NSLin ...

  2. effective OC2.0 52阅读笔记(三 接口与API设计)

    第三章:接口与API设计 15 用前缀避免命名空间冲突 总结:避免重名符号错误的唯一办法是变相实现命名空间.为所有符号都加上命名前缀.类和分类都应加三字前缀.注意类实现文件中的纯C函数及全局变量,是算 ...

  3. effective OC2.0 52阅读笔记(二 对象、消息、运行期)

    第二章:对象.消息.运行期 6 理解属性这一概念 总结:OC解决硬编码偏移量问题的做法,一种方案是把实例变量当做一种存储偏移量所用的特殊变量,交由类对象保管,偏移量会在运行期查找,叫做稳固的“应用程序 ...

  4. effective OC2.0 52阅读笔记(一 熟悉Objective-C)

    第一章:熟悉Objective-C 1 了解objective-c语言的起源 总结:OC为C语言添加了面向对象的特性,是其超集.采用动态绑定的消息结构而非函数调用,也就是说,要在运行时才检查对象类型及 ...

  5. effective OC2.0 52阅读笔记(六 块与大中枢派发)

    派发队列:dispatch_queue 操作队列:NSOperationQueue  组:dispathc_group_t 37 理解“块”这一概念 总结:块就是一个值,且自有其相关类型.块的强大之处 ...

  6. effective OC2.0 52阅读笔记(五 内存管理)

    第五章:内存管理 29 理解引用计数 30 以ARC简化引用计数 总结:ARC通过命名约定将内存管理规则标准化.其他编程语言很少像OC这样强调命名.ARC通过设置全局数据结构(此数据结构的具体内容因处 ...

  7. 论文阅读笔记四:CTPN: Detecting Text in Natural Image with Connectionist Text Proposal Network(ECCV2016)

    前面曾提到过CTPN,这里就学习一下,首先还是老套路,从论文学起吧.这里给出英文原文论文网址供大家阅读:https://arxiv.org/abs/1609.03605. CTPN,以前一直认为缩写一 ...

  8. 《大数据互联网大规模数据挖掘与分布式处理》阅读笔记(四)-----WEB广告

    作者: 沈慧 目前,许多WEB应用通过广告而维持生计,从在线广告中获益最多的是搜索应用,“adwords”模型就是一种用于搜索查询和广告匹配的模型.这一章介绍了在线广告的相关问题.在线算法.Adwor ...

  9. 论文阅读笔记四十九:ScratchDet: Training Single-Shot Object Detectors from Scratch(CVPR2019)

    论文原址:https://arxiv.org/abs/1810.08425 github:https://github.com/KimSoybean/ScratchDet 摘要 当前较为流行的检测算法 ...

随机推荐

  1. firefox的plugin-container.exe进程如何关闭?

    为什么要关闭container进程? 查看firefox所消耗的资源: ff本身: cpu一般是0-10%, 内存一般是400MB左右 plugin-container: cpu所占的比例很高, 可达 ...

  2. 配置 nginx server 出现nginx: [emerg] "root" directive is duplicate in /etc/nginx/server/blogs.conf:7

    在配置nginx 虚拟机时,执行 sudo /usr/sbin/nginx -t 报下面的错误: nginx: [emerg] nginx: configuration file /etc/nginx ...

  3. Python IDE: Eclipse + PyDev

    依次下载 Python.Django(并安装好).JAVA.Eclipse.Eclipse 中文语言包(http://www.eclipse.org/babel/downloads.php).PyDe ...

  4. word中替换被批注的正文的值

    word中替换被批注的正文的值   word批注winform替换值正文             try            {                Word.Document docum ...

  5. WPF中的数据绑定!!!

    引用自:https://msdn.microsoft.com/zh-cn/magazine/cc163299.aspx  数据点: WPF 中的数据绑定 数据点 WPF 中的数据绑定 John Pap ...

  6. MySql的安装及配置详细指引!

    一.安装My Sql数据库 1.1,首先下载MySQL与HeidiSQL工具,双击打开后可以看到名为”mysql-5.0.22-win32 Setup.exe”的安装程序,双击执行该程序. 1.2,打 ...

  7. 利用loadrunner代理方式,录制手机APP脚本

    利用loadrunner代理方式录制手机(iPhone.android)应用程序HTTP脚本 工具/原料 loadrunner 智能手机 方法/步骤   利用笔记本网卡或者类似360随身wifi,在安 ...

  8. ASP.NET后台输出js大全,页面顶部、form表单中前面与后面、和UpdatePanel(ScriptManager、AJAX)输出JS

    Response.Write 与   Page.ClientScript.RegisterStartupScript 与 Page.ClientScript.RegisterClientScriptB ...

  9. POJ2104 —— K-th number

    1.题目大意:区间第k小,什么修改没有... 2.分析:这个是可持久化线段树,也是主席树,解释一下,n个线段树是怎么存下的,就是每一颗线段树和前一个有logn个点不一样 然后我们只需要一个线段树开lo ...

  10. CSS继承总结

    CSS的一个重要特征就是继承,它是依赖于祖先-后代的关系的.继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代. CSS可以继承的属性有: 1.文字相关:font-famil ...