2011-03-14 99 views
18

我還有另一個討厭的警告,我想離開。基本上,我有一個int像這樣聲明:@property (nonatomic, assign) int *myInt;並像這樣設置:myInt = 0;。它也在實現文件中被合成。我在設置int值的行上收到一條警告,它說Incompatible intiger to pointer conversion assigning to 'int *' from 'int'.我應該怎麼做才能解決這個問題?從int分配給'int *'的指針轉換不兼容整數

回答

55

錯誤信息中有一個很大的提示!

在C和Objective C中,int是原始數據類型。你寫過int *,意思是「一個指向int的指針」,而它看起來像你只是想要一個int。

所以,你的屬性改成這樣:

@property (nonatomic, assign) int myInt; 

欲瞭解更多信息,谷歌「C指針」,你會發現這樣的信息:http://pw1.netcom.com/~tjensen/ptr/pointers.htm

2

另一種方式來解決,這是根本就沒有聲明指針(刪除星號):

@interface ViewController : UIViewController { 
    NSUInteger myObjcInt; // unsigned (>= 0) NSObject int, yo 
} 
+0

這不是另一種方式 - 這與occulus說的是一樣的。順便說一句,你的評論稱它爲「NSObject int」,這並不真正作爲一個術語很有意義。 – Chuck 2012-01-05 19:27:00

+1

Touche。在搜索與NSInteger相關的問題時,我正在閱讀這篇文章,而不是Int。那裏的回覆太快了,夥計們。我的錯。 – Rob 2012-01-18 14:40:24

12

是,只需從聲明刪除星號(*)。

例如。聲明BOOL isChecked而不是BOOL * isChecked

1

int *MyInt是指向int的指針,而不是int。
正如別人告訴你的,只要刪除*,你將有一個普通的int。

相關問題