NSProxy несовместимые типы указателей

У меня есть NSProxy подкласс называется EBManagedObject и NSObject подкласс называется EBObject, EBManagedObject инициализируется с помощью guid, который используется для получения EBObject от EBObjectRepository, EBManagedObject перешлет любое сообщение, отправленное ему на его EBObject, за исключением некоторых запрещенных сообщений, в этом случае он выдаст исключение. Так что везде, где вы можете использовать EBObject Вы можете использовать EBManagedObject, Моя проблема в том, что XCode не понимает этого и выдает предупреждение о несовместимых типах указателей при попытке сделать следующее:

EBObject *object = [[EBManagedObject alloc] initWithGuid:guid];

Это достаточно просто исправить:

EBObject *object = (EBObject *)[[EBManagedObject alloc] initWithGuid:guid];

Но мне интересно, есть ли способ заставить Xcode рассмотреть EBObject а также EBManagedObject совместимые типы указателей?

Я знаю, что могу создать протокол, который они оба реализуют и делают что-то вроде:

id<EBObject> object = [[EBManagedObject alloc] initWithGuid:guid];

Но у меня есть веские причины не делать этого.

Кстати, все имена классов составлены. Мой реальный сценарий более сложный, поэтому я сделал упрощенный пример, чтобы объяснить мою проблему.

0 ответов

Другие вопросы по тегам