這是真的說,當編程爲iphone時使用整數,你不合成它們,你不釋放它們。objective c iphone整數
如果是真的,有人可以解釋爲什麼?
我每次嘗試時都會收到錯誤。 另外,如果我設置@property爲整數值,我也會得到錯誤
這是真的說,當編程爲iphone時使用整數,你不合成它們,你不釋放它們。objective c iphone整數
如果是真的,有人可以解釋爲什麼?
我每次嘗試時都會收到錯誤。 另外,如果我設置@property爲整數值,我也會得到錯誤
您可以合成int
-s。但你必須聲明爲assign
-Properties:
@property(assign) int X;
在Objective-C,一個int
爲基本類型,然而一個NSNumber(或其他類似的東西)的對象。原始類型,因爲它們不支持許多的事情要做對象(如getter和setter方法),只能宣佈
@property(assign) int x;
同樣,你不釋放他們,因爲這樣做將意味着你」重新發送一個-release
消息到一個不支持消息的原語。你可以@synthesize
或@dynamic
他們,但只有當你給他們適當的(分配)財產。
短版本:像int
這樣的原語沒有消息或方法。不要試圖給他們一些。
如果您將整數聲明爲'NSInteger'或C樣式的基元int,那麼您所說的是真實的。但是,如果您使用的是NSNumber類,則不會。讓我解釋一下:
NSInteger不是一個Objective-C類。它不過是一個整數的同義詞。 NSInteger定義如下:
#if __LP64__ || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif
NSNumber是一個Objective-C類,也是NSValue的一個子類。可以從有符號或無符號字符,短整型,整型,長整型,長整型,浮點型,雙精度型或BOOL創建NSNumber對象。 其中,NSNumber只能用於需要對象的NSArray等集合,但NSInteger不能直接在那裏使用。
兩點意見:
的NSNumber比,也就是說,詮釋慢得多。一般來說,如果您可以避開使用標量值,那就這樣做。
定義屬性時,儘可能使用'nonatomic'。它允許顯着的性能提升(當然,如果您有多個線程在其上運行,有一些風險)。
+1優點 – 2010-02-01 17:21:58
什麼錯誤? ___ – kennytm 2010-02-01 16:04:07