Objective-C编程:nil处理、对象复制、属性字符串与集合操作
1. nil的处理
在编程中,nil对象不实现任何协议,当 delegate 为nil时, -conformsToProtocol: 消息会返回 NO 。nil也适用于属性值,例如当 collection 为nil时, collection.count 表达式的值总是0,因为它会被转换为 [collection count] 。同时,存在级联效应,如 [viewController.button.superview.backgroundColor setFill] 语句,若 backgroundColor 、 superview 、 button 或 viewController 为nil,该语句将不执行任何操作。
在设计时,可以用积极的方式表达返回值和属性值,例如定义 -hasContent 方法而非 -isEmpty 方法。因为当对象引用为nil时, -hasContent 返回 NO ,这符合逻辑;而 -isEmpty 也返回 NO ,会暗示对象有内容,这是错误的。
不过,nil并非总是无害的:
超级会员免费看
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



