在實現了一個NSString getter或setter顯示爲爲什麼沒有布爾必須指向一個對象
-(NSString *)nameOfSomething
然而,當你獲取或設置一個布爾你不這樣做我們一個星號來指向東西
-(BOOL)nameOfSomething
我想知道爲什麼你必須這樣做?爲了指出還不需要星號嗎?是否有某個原因布爾不需要?
感謝
在實現了一個NSString getter或setter顯示爲爲什麼沒有布爾必須指向一個對象
-(NSString *)nameOfSomething
然而,當你獲取或設置一個布爾你不這樣做我們一個星號來指向東西
-(BOOL)nameOfSomething
我想知道爲什麼你必須這樣做?爲了指出還不需要星號嗎?是否有某個原因布爾不需要?
感謝
在嘗試編程iOS之前學習C是一個好主意,因爲你將要使用Objective-C,而Objective-C是C.在普通數據類型和指針之間是有區別的。星號與指針有關。 (Objective-C的「對象」類型都是三分球,但C有其他類型。)C的需要爲iOS編程都在這裏討論
最重要的方面:
http://www.apeth.com/iOSBook/ch01.html
由於該章解釋,一個BOOL就像一個NSInteger - 它只是一個數字,而不是一個對象。
BOOL
只是signed char
,你不要不採取它的地址/參考。
您直接指定給它。
如果你看到它的定義是爲:
typedef signed char BOOL;
// BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C"
// even if -funsigned-char is used.
#if __has_feature(objc_bool)
#define YES __objc_yes
#define NO __objc_no
#else
#define YES ((BOOL)1)
#define NO ((BOOL)0)
#endif
您使用%d
不%@
看到它的價值。
它是一個原始類型,就像一個int。 從理論上講,它可能是一個對象,但它是一個非常簡單的概念,幾乎沒有用處。
考慮這個類比。 (左爲原始類型,右爲類)
int : Integer (Integer from java)
BOOL : ---
--- : NSString
等等。
如果您真的需要一個對象,請打包裝。
I object * Objective-C是C *,** IT是C的超集** – 2013-03-24 16:03:06
但是NSInteger是一個對象(實際上是A類) – 2013-03-24 16:06:37
@LayGonzález不!請參閱https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_DataTypes/Reference/reference.html – 2013-03-24 16:09:33