我有一个NSProxy
名为的子类EBManagedObject
和一个NSObject
名为EBObject
. EBManagedObject
使用用于检索EBObject
from的 guid 进行初始化EBObjectRepository
。EBManagedObject
会将发送给它的任何消息转发到它的EBObject
,除了一些受限消息,在这种情况下它会抛出异常。因此,在任何可以使用 an 的地方,您都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];
但我有充分的理由不这样做。
顺便说一句,所有的类名都是组成的。我的实际场景比较复杂,所以我做了一个简化的例子来解释我的问题。