2012-02-03 117 views
5

我用布爾輸入變量聲明瞭一個函數。我沒有得到任何錯誤。但是,從另一個控制器調用它時,會出現通知:「不兼容的整數到指針轉換將'BOOL'發送到BOOL類型的參數」。我究竟做錯了什麼?謝謝。ios布爾變量聲明

- (void)composeBar: (BOOL *)savePars 

從其它視圖:

AppDelegate *localFunction = [[UIApplication sharedApplication] delegate]; 

[localFunction composeBar:YES]; 

回答

9

BOOL*不是一個布爾值。這是一個指向布爾值的指針。只需使用

- (void)composeBar:(BOOL)savePars 

你可能會感到困惑,因爲所有的OBJ-C對象與*聲明,但這是因爲他們實際上是指針。但是,BOOL不是一個對象,它實際上只是一個char,它包含01。正如您將int用於整數而不是int*(或更多的慣用代碼,NSInteger),您可以使用BOOL而不是BOOL*

4

這是因爲您聲明函數採用指向布爾值的指針,而不是布爾值。這是該聲明應該是什麼樣子:

- (void)composeBar: (BOOL)savePars 

*伴隨ID類型(您通過@interface/@implementation定義即那些)。普通的C類型,枚舉,結構體等在聲明中不需要*,除非你真的想傳遞一個指針。