2010-07-07 54 views
5

什麼時候應該在Objective-C中使用基元而不是NSValue的子類?此代碼肯定比使用NSNumber更清潔(我認爲):什麼時候在Objective-C中使用基元?

float width = sliderOne.frame.size.width; 
    float totalWidth = width * 2 + 10; 

但是有沒有什麼缺點?另外,我不需要撥打release或任何帶原語的東西,這是否正確?那麼當內存超出範圍時內存是否被釋放?

回答

4

基本類型是首選。當您必須將它們作爲對象傳遞時,才使用NSNumber和NSValue對象。

原始類型的唯一缺點是不能將它們作爲對象傳遞。

可以在堆棧(局部變量)或堆(w/malloc)上分配原始類型。對象只能在堆上分配,這比堆棧分配更昂貴。

+0

爲什麼我在意我不能將它們作爲對象傳遞?對不起,如果這是一個愚蠢的問題來自自動裝箱的宇宙。 – 2010-07-07 01:25:55

+1

如果你想調用一個接受NSNumber對象作爲參數的API,或者將它們存儲在NSArray或NSDictionary中,那麼它必須是一個對象。 – progrmr 2010-07-07 01:51:34

+1

我會說基本的*標量*類型是首選。 C數組或C字符串比NSArray或NSString更可取,因此需要特殊情況。 – Chuck 2010-07-07 02:33:52

0

無論你在自己的代碼中使用哪種方法都更方便,但通常當需要將它傳遞給某些API時,通常會使用NSW。

2

使用基元類型的一個主要缺點是你不能將它們存儲在NSArray中。

+2

或任何可可收集對象 – JeremyP 2010-07-07 10:02:15

+0

確實,良好的電話 – blu 2010-07-07 14:56:15

相關問題