1

現在、OCMockをGCC4.2(元の:4.0)でコンパイルしようとしていますが、次の警告が表示され始めます。

警告:個別のObjective-Cタイプから「partialMockForObject:」の引数1を渡します

呼び出しメソッドは次のとおりです。

- (void)forwardInvocationForRealObject:(NSInvocation *)anInvocation
{
    // in here "self" is a reference to the real object, not the mock
    OCPartialMockObject *mock = [OCPartialMockObject partialMockForObject:(id)self];
    // ...
}

呼び出されるメソッドは次のとおりです。

+ (id)partialMockForObject:(NSObject *)anObject;

引数の前にキャストtoidを付けると、問題が修正されます。すべてのオブジェクトはNSObjectのサブクラスであり、キャストは暗黙的になりますが(スーパークラスの置換:スーパークラスは常にその子クラスに置き換えることができます)

4

1 に答える 1

2

すべてのオブジェクトがNSObjectの子孫である必要はありません。ほとんどのCocoaクラスは(NSProxyは私の頭のてっぺんから発生する唯一の例外です)、クラスをNSObjectの子孫として宣言しない場合、そうではありません。これが発生する場所の宣言でそれを忘れたのでしょうか?

于 2009-10-04T09:10:57.123 に答える