为什么要对具有自定义内存管理语义的集合使用免费桥接



在书中

有效的Objective-C 2.0:改进iOS和OS X程序的52种具体方法

有一个

项目 49:对具有自定义内存管理语义的集合使用免费桥接

本章主要通过一个解决在 NSDictionary 中复制键而保留值的问题的示例来解释免费桥接的重要性。

它说,我引用如下:

如果要用作键的对象无法复制,该怎么办?

我的问题是,如果Objective-C中的所有对象都是从一开始就实现复制方法的NSObject的子类,那么怎么会有无法复制的对象呢?是否有任何真实的场景需要这种情况?

NSObject实现了-copy,以方便NSCopying-copyWithZone:。如果你的对象不符合NSCopying和实现-copyWithZone:,调用-copy将引发异常。并非所有对象都实现复制,这就是为什么您需要保留它们而不是复制的原因。(有关-copy的详细信息,请参阅-[NSObject copy]文档。

最新更新