1

というNSProxyサブクラスとEBManagedObjectというNSObjectサブクラスがありEBObjectます。fromEBManagedObjectを取得するために使用される GUID で初期化されます。は、送信されたすべてのメッセージをその に転送しますが、一部の制限されたメッセージを除き、例外がスローされます。したがって、 を使用できる場所ならどこでも を使用できます。私の問題は、Xcode がこれを理解せず、次のことをしようとすると、互換性のないポインター型の警告が表示されることです。EBObjectEBObjectRepositoryEBManagedObjectEBObjectEBObjectEBManagedObject

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

修正するのは簡単です:

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

EBObjectしかし、XcodeにEBManagedObject互換性のあるポインタ型を考慮させる方法があるかどうか疑問に思っていますか?

両方が実装して次のようなことを行うプロトコルを作成できることはわかっています。

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

しかし、私にはそれをしない十分な理由があります。

ちなみにクラス名は全部でっち上げです。私の実際のシナリオはもっと複雑なので、問題を説明するために簡単な例を作成しました。

4

0 に答える 0