2011-02-18 19 views
9

Temel C türleri (int, float, double) yerine Foundation Framework'den NSNumber kullanımının yararı nedir? Saf C kullanılarakTemel C numarası türleri yerine NSNumber kullanmalı mıyım?

NSNumber *intNumber; 
NSInteger myInt; 
intNumber = [NSNumber numberWithInteger: 100]; 
myInt = [intNumber integerValue]; 

: NSNumber kullanarak

(? veya sınıf)

int intNumber; 
intNumber = 100; 

çok daha kolay ve NSNumber bir amacı, bilgi C

kullanımı ekonomik görünüyor yazın, ancak neden bunları basit C değişkenleri kullanmalıyım? Onları ne zaman kullanmalıyım?

cevap

17

NSNumber'un amacı, nesnelerdeki ilkel türlerin (işaretçi türleri) basitçe kutulanmasıdır, böylece bunları çalışmak için işaretçi türü değerleri gerektiren durumlarda kullanabilirsiniz.

Yaygın bir örnek: Çekirdek Veri varlıklarında sayısal değerleri devam ettirmek istiyorsanız NSNumber'u kullanmanız gerekir.

Hesaplamalar için temel öğeler kullanmalı ve kullanmalısınız (ondalık basamaklar dışında, bu durumda NSDecimal veya NSDecimalNumber kullanın).

+6

+1 Ayrıca Foundation'ın koleksiyon sınıfları sadece ilkeleri değil nesneleri kabul eder. –

0

Belirli nesnelerle parametrelerin geçirilmesiyle ilgili olarak, temel bir veri türü kullanmak işe yaramayacaktır. Ayrıca, NSNumber sınıfı, değerleri diğer veri türlerine hızla dönüştürmek için seçenekler sunar.

2

Nesne olarak bir sayı geçirmeniz gerekiyorsa, NSNumber kullanın.

Aritmetik işlemler yapmanız gerekiyorsa, int ve double'u kullanabilirsiniz. 32/64 bit sorunlarla uğraşmak istemiyorsanız, NSInteger ve CGFloat'u kullanabilirsiniz.