我正在编写一个 Core Data 应用程序,并且我已经开始将我的对象传递给我的视图和管理器。例如,我的 UIImageView 子类知道如何从对象中提取图像数据,如果尚未加载图像数据,它知道如何获取、分配和使用图像。我有一个单例管理器将数据上传到服务器,这些管理器获取托管对象,然后在成功上传时使用服务器 ID 更新它们。
这似乎是错误的方法,因为我正在删除托管对象(服务器告诉我对象已在服务器端被删除)。问题是对象可以从我的视图和管理器下方删除。
更多示例:如果完成块仍持有该对象,则将使用已删除的托管对象调用它。如果通知或用户事件在消失之前进入视图,它也会尝试访问已删除的对象。是的,当底层对象被删除(不再匹配我的获取谓词)时,我的表视图/集合视图将刷新并删除关联的视图,但仍然存在完成块。
如果要删除对象,像这样传递托管对象是否安全?到目前为止,这种方法就像做梦一样,我开始认为我需要将托管对象与我的所有视图和管理器完全分离。也就是说,控制器获取对象,创建视图/单元格并设置所有需要的数据(包括在委托操作发生时引用对象的 ID),然后让对象再次出现故障。当用户以任何方式与视图交互时,它必须回调控制器,获取相关对象并使用该数据。我应该停止持有我的托管对象,还是有一种干净的方法来检查整个地方的 .isDeleted?