在书中
有效的Objective-C 2.0:52改进iOS和OS X程序的具体方法
有一个
项目49:对具有自定义内存管理语义的集合使用免费桥接
本章主要解释了免费桥接的重要性,以及解决在保留值时在NSDictionary中复制密钥的问题的示例。
它说,我引用如下:
如果无法复制要用作密钥的对象,该怎么办?
我的问题是,如果Objective-C中的所有对象都是从一开始就实现复制方法的NSObject的子类,那么怎么会有无法复制的对象呢?是否有任何真实场景需要这种情况?
答案 0 :(得分:3)
NSObject
实施-copy
,方便NSCopying
的{{1}}。如果您的对象不符合-copyWithZone:
并实施NSCopying
,则在其上调用-copyWithZone:
将引发异常。并非所有对象都实现了复制,这就是为什么你需要保留它们而不是复制它们。 (有关-copy
的更多信息,请参阅documentation for -[NSObject copy]
。)