Является ли NSManagedObject делегатом хорошей практикой? - PullRequest
2 голосов
/ 11 февраля 2012

детали задачи:

Я разрабатываю приложение, которое взаимодействует с 1-30 аппаратными устройствами одновременно, каждое устройство имеет собственное TCP-соединение.

Поэтому я создал сущность "hardwareObject", которая должна представлять некоторые свойства этого устройства, например, значение1 и значение2.

Я создал класс обработчика соединения, который я определил как временный атрибут моего объекта "hardwareObject". При изменении пользовательского интерфейса объект базовых данных изменяется, а сам объект базовых данных сообщает своему соединению об отправке изменений значения1 или значения 2.

Я хочу сообщить экземпляру "hardwareObject", когда новые данные поступают через метод делегата, поэтому он является делегатом своего атрибута.

Мне интересно, если сделать NSManagedObject делегатом s.th. такое хорошая практика?

Может ли это вызвать какие-либо проблемы, связанные с ошибками или другими базовыми данными? Или мне лучше создать объект основного обработчика соединений sharedInstance, который будет заботиться о каждом из обработчиков соединений и общаться с моими основными объектами данных только по требованию?

Ответы [ 2 ]

0 голосов
/ 12 февраля 2012

Это абсолютно правильный дизайн.NSManagedObjects может управляться их контекстом (управляемого объекта), но если вы сохраните NSManagedObject, он останется действительным, и вы сможете свободно применять любую специальную бизнес-логику в этом классе или делать его делегатом.Фактически, одна из причин, по которой Core Data позволяет вам создавать подкласс NSManagedObject, заключается в том, что вы можете делать эти вещи.

Просто убедитесь, что вы отменили регистрацию своего класса в качестве делегата, если вам нужно удалить объект из контекста..

0 голосов
/ 11 февраля 2012

Звучит как плохая идея.Делегаты должны существовать, по крайней мере, до тех пор, пока объект, для которого они являются делегатом, не контролируется жизненным циклом управляемых объектов - об этом заботится контекст.

Как вы упоминаете в своем вопросе, сбой также может быть проблемой - любая информация о состоянии может исчезнуть в любой момент, опять же, вне вашего контроля.

Кроме того, это звучит как довольно серьезное нарушение MVC, если это касается вас.

...