2010-02-09 72 views

回答

5

您正在傳遞一個「raw」布爾值,其中id(指向對象的指針)應該是。

[self performSelectorOnMainThread: @selector(refreshView:) 
     withObject:someBoolValue 
     waitUntilDone:NO] 

最好是

[self performSelectorOnMainThread:@selector(refreshView:) 
     withObject: [NSNumber numberWithBool: someBoolValue] 
     waitUntilDone: NO] 

您可以通過發送boolValue方法將數字對象提取您refreshView:方法布爾值:

if([myWrappedBoolean boolValue]) { 
    ... 
} 

不像Java或C#,目標-C沒有從原始值到對象的「自動裝箱」。 BOOL類型只是一個小整數類型,它會導致出現錯誤消息,因爲編譯器需要一個指向performSelectorOnMainThread:withObject:waitUntilDone:的第二個參數的指針。

+0

感謝您的解釋!現在我懂了。 我還有一個相關的問題:我應該把什麼參數類型放在refreshView:方法中?它應該是BOOL嗎?或ID? – Jakub 2010-02-10 09:00:46

+0

Definetly'id'或者甚至更具體的類型(如果你按照答案中給出的方向,''NSNumber')。沒有自動裝箱也意味着沒有自動* un *拳擊。 – Dirk 2010-02-10 19:12:22

+0

謝謝!它看起來很合理。 – Jakub 2010-02-11 08:44:56

相關問題