天天看點

包裝類---NSNumber和NSValue

包裝類:就是将C語言中的基礎變量,包裝成一個對象,這樣就可以将其運用到OC中的數組,字典中。和java中的包裝類是一個意思。

NSNumber:

NSNumber * num = [NSNumber numberWithInt:6];

- (char)charValue;

- (id)initWithChar:(char)value;

+ (NSNumber *)numberWithChar:(char)value;

- (NSComparisonResult)compare:(NSNumber *)otherNumber;

- (BOOL)isEqualToNumber:(NSNumber *)number;

NSValue:

【注】NSValue是NSNumber的父類,可以存儲任何類型的資料,包括複合資料類型(數組,指針,結構體等),甚至是對象。

//原生方法

- (void)getValue:(void *)value;

- (const char *)objCType

//初始化或類方法

- (id)initWithBytes:(const void *)value objCType:(const char *)type;

+ (NSValue *)valueWithBytes:(const void *)value objCType:(const char *)type;

+ (NSValue *)value:(const void *)value withObjCType:(const char *)type;

//存取對象的方法(了解)

+ (NSValue *)valueWithNonretainedObject:(id)anObject;

- (id)nonretainedObjectValue;

//比較兩個Value對象是否相等(了解)

- (BOOL)isEqualToValue:(NSValue *)value;

【注】NSValue和NSNumber也是工廠類,不能被繼承

//NSString是工廠類,是一堆類,共享一個名字。根據不同的建立方式,會得到不同類的對象。

//例如:有一個動物類,可以建立貓,和狗,和其他動物。