是否将NSManagedObject作为委托是一种好习惯?

时间:2012-02-11 12:50:40

标签: ios macos core-data nsmanagedobject

任务详情:

我正在开发一个同时与1-30个硬件设备通信的应用程序,每个设备都有自己的tcp连接。

因此,我创建了一个实体“hardwareObject”,它将代表该设备的某些属性,例如value1和value2。

我创建了一个连接处理程序类,我将其定义为“hardwareObject”实体的瞬态属性。在UI更改时,核心数据对象被修改,核心数据对象本身告诉它连接以发送value1或value2的更改。

当新数据通过委托方法到达时,我想通知“hardwareObject”的实例,因此它是它的属性的委托。

我想知道是否让NSManagedObject成为s.th的代表。是一个很好的做法?

是否会导致与故障或其他核心数据相关的问题? 或者我应该更好地创建一个sharedInstance主连接处理程序对象,该对象负责处理每个连接处理程序并仅在需要时与我的核心数据对象通信?

2 个答案:

答案 0 :(得分:0)

这听起来不错。代表需要存在至少与它们作为委托的对象一样长,并且您无法控制托管对象的生命周期 - 这由上下文来处理。

正如你在问题中提到的那样,错误也可能是一个问题 - 任何状态信息都可能在任何时候消失,再次出于你的控制。

此外,如果这涉及到你,这听起来像是对MVC的严重违反。

答案 1 :(得分:0)

这是一个完全有效的设计。 NSManagedObjects可以由它们的(托管对象)上下文管理,但是如果保留NSManagedObject,它将保持有效,并且您可以自由地在该类中实现任何特殊的业务逻辑或使其成为委托。实际上,Core Data允许您子类化NSManagedObject的其中一个响应是您可以执行这些操作。

如果您需要从上下文中删除对象,请确保取消注册您的类作为委托。

相关问题