编写高质量代码-OC 第4章 设计与声明
23、编写代码要遵循Cocoa API约定
24、洞悉实例变量
- 1、实例变量的命名规范是使用小写字符冲,不包含标点符号和特殊字符。
- 2、只加入一些绝对必要的实例变量,否则容易造成大的开销。
- 3、永远不要将变量设置为@public,因为这违反了封装的原则。
- 4、确保类基本属性对应的实例变量有存储方法。
25、透彻了解属性的里里外外
- 1、属性的动态性定义,需用关键字@dynamic。属性动态性是相对于@synthesis来说的,不是由编译器自动生成setter或getter,而是在运行时动态添加的setter和getter.
- 2、属性采用动态性,与采用静态性相比,可以简化代码的编写,便于代码的管理。
- 3、默认情况下,可写属性使用的实例变量被称为_propertyName。如果想要使用的实例变量不用名,需要在实现中指示编译器合成的变量。
- 4、利用类扩展可实现对属性的“篡改”。
26、存取方法是良好的类接口必要组成部分
27、明晓类公共领域的方法都是虚方法
- 1、在Objective-C中,所有的方法都是虚方法。
- 2、实现纯虚方法依赖正式协议来实现
- 3、协议并不是真正的类,他只能声明方法,不能添加数据
- 4、非正式协议并不是真正的协议,它的代码没有约束力
28、初始化还是解码取决于是否支持归档和解档
- 1、类的对象支持归档和解档,该类必须遵循NSCoding协议;必须实现对象进行编码(encodeWithCoder:)和解码(initWithCoder:)的方法
- 2、类的初始化方法和initWithCoder:在角色上并行性存在例外
29、利用键-值机制访问类的私有成员变量和方法
- 1、在Objective-C中,类的成员变量或方法是没有绝对私有的,可以借助“编译运行时”机制来实现对他们的访问
- 2、KVC和KVO在定制子类的设计时特别重要
- 3、KVC、KVO和KVB都支持遍历
- 4、KVC主要通过isa指针来实现其内部查找定位。KVO其设计基于设计模式中的“观察者模式”。KVB和KVO最明显的使用场景就是在一些界面实时显示很强的地方。
30、浅复制适宜指针而深复制适宜数据
31、明智而审慎地使用NSCopying
- 1、基类没有实现NSCopying,那么子类的实现必须复制它所继承的实例变量,以及那些在类中声明的实例变量,最安全的方式是使用alloc、init...和set方法
- 2、类继承了NSCopying的行为,并声明了额外的实例变量,那么也需要实现copyWithZone;
- 3、如果基类使用了或者有可能使用过NSCopyObject,那么必须使用有别于alloc和init...函数的情况,用不同的方式处理实例变量。
32、使用协议来实现匿名对象的提供
- 1、采用协议,可灵活实现。实现抽象不应该依赖于细节,而细节应依赖于抽象,降低“声明”和“实现”的耦合度。
- 2、设计程序采用协议,可减少继承类的复杂性。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了