2009-10-04 64 views
1

目前我試圖編譯OCMock用GCC4.2(原:4.0)傳遞參數,並開始得到以下警告:警告:從不同的Objective-C型

警告:傳遞的參數 1' partialMockForObject:」從不同 目標C型

調用方法是:

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

和第e所謂的方法是:

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

將參數加上id前綴來修復問題。我認爲所有的對象都是NSObject的子類,雖然中投將進行隱:

回答

2

所有對象不一定是從NSObject的後裔(超類替代超類總是可以通過任何子類的它取代)。大多數可可類(NSProxy是發生了我的頭頂部的唯一的例外),但是如果你不聲明一個類從NSObject的後裔被,也不會是。難道你忘記了在這種情況發生的地方?

+0

它確實是一個NSProxy派生類。投到(id)會工作嗎?非常感謝,我會將其標記爲正確的答案。 – 2009-10-04 09:19:25

+0

@Johannes:幾乎可以肯定。我知道在這一框架方法簽名有ID的參數類型的其他版本,並在另一端確實NSProxy將對任何迴應的對象。 – Chuck 2009-10-04 17:44:49