我一直想知道为什么NSProxy类如此重要。为什么一个对象需要将其实例变量保留在其他对象中?我需要一些示例来了解何时使用它。谢谢!

最佳答案

示例A:假设您正在编写一个对象持久层(如CoreData,但当然更好;)。

假设您只需查看索引树就可以非常快速地完成数据库中数千个项目的查询,而无需读取和初始化整个项目。
您可以使用NSProxy来实现延迟加载。使用索引表查找对象的主键,但不创建该对象,而是返回知道真实对象的主键的NSProxy。

仅当需要另一个数据库查找时,代理对象才会创建该项目并将所有将来的消息重定向到该项目。调用代码将只处理NSProxy项,而现在永远不会处理在后台执行的延迟加载。

示例B(对不起,这是OS X):当您在大纲层次结构中有两次相同的项时,NSOutlineView的行为确实很奇怪。当您的应用中具有智能分组功能时,这是非常常见的问题。解决方案:在大纲 View 中使用不同的代理,指向同一对象。

关于objective-c - NSProxy类有用的真实示例,为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14021281/

10-10 20:37