什麼時候應該在Objective-C中使用基元而不是NSValue
的子類?此代碼肯定比使用NSNumber更清潔(我認爲):什麼時候在Objective-C中使用基元?
float width = sliderOne.frame.size.width;
float totalWidth = width * 2 + 10;
但是有沒有什麼缺點?另外,我不需要撥打release
或任何帶原語的東西,這是否正確?那麼當內存超出範圍時內存是否被釋放?
什麼時候應該在Objective-C中使用基元而不是NSValue
的子類?此代碼肯定比使用NSNumber更清潔(我認爲):什麼時候在Objective-C中使用基元?
float width = sliderOne.frame.size.width;
float totalWidth = width * 2 + 10;
但是有沒有什麼缺點?另外,我不需要撥打release
或任何帶原語的東西,這是否正確?那麼當內存超出範圍時內存是否被釋放?
基本類型是首選。當您必須將它們作爲對象傳遞時,才使用NSNumber和NSValue對象。
原始類型的唯一缺點是不能將它們作爲對象傳遞。
可以在堆棧(局部變量)或堆(w/malloc)上分配原始類型。對象只能在堆上分配,這比堆棧分配更昂貴。
無論你在自己的代碼中使用哪種方法都更方便,但通常當需要將它傳遞給某些API時,通常會使用NSW。
爲什麼我在意我不能將它們作爲對象傳遞?對不起,如果這是一個愚蠢的問題來自自動裝箱的宇宙。 – 2010-07-07 01:25:55
如果你想調用一個接受NSNumber對象作爲參數的API,或者將它們存儲在NSArray或NSDictionary中,那麼它必須是一個對象。 – progrmr 2010-07-07 01:51:34
我會說基本的*標量*類型是首選。 C數組或C字符串比NSArray或NSString更可取,因此需要特殊情況。 – Chuck 2010-07-07 02:33:52