OC是面向對象的編程語言,但它也是C語言擴展而來的,而C語言中包含的基本類型都不是對象,也不具備“對象”的特性——沒有屬性、方法可以被調用。OC提供了NSValue、NSNumber來封裝C語言的基本類型,這樣就可以讓它們具有面向對象的特征
。
需要注意的是NSInteger、NSUInteger、CGFLoat不是包裝類,雖然他們帶有NS、CG前綴,它們并不是包裝類,只是基本類型,
==
它們分別大致等于:long、unsigned long和double(或float)。為了更好地兼容不同的平臺(也就是有時說的不用考慮32位),當程序需要定義整形變量時,建議使用NSInteger和NSUInteger
。
NSValue和NSNumber都是包裝類,
其中NSValue是NSNumber的父類;NSValue代表一個更通用的包裝類,它可用于把short、int、long、float、char、指針、對象id等數據項,通過該包裝類,就可以那些數據項等添加到NSArray、NSSet等集合(這些集合要求它們的元素必須是對象)。
NSNumber是更具體的包裝類,主要用于包裝C語言的各種數值類型,
==
NSNumber主要包括如下三類方法:
1、+numberWithXxx::該類方法直接將特定類型的值包裝成NSNumber。
2、-initWithXxx::該實例方法需要先創建一個NSNumber對象,再用一個基本類型的值來初始化NSNumber。
3、-xxxValue:該實例方法返回該NSNumber對象包裝的基本類型的值。
實例代碼如下:
import<Foundation/Foundation.h>
int main()
{
@autoreleasepool{
NSNumber* num=[NSNumber numberWithInt:20];
NSNumber* dem=[NSNumber numberWithInt:30];
NSLog(@"%@%@",[num intValue],[dem intValue];
NSString* ch=[[NSString alloc]initWithChar:'J'];
NSLog(@"%@",ch);
}
}
description方法:
description 方法簡介 : 類似于 Java 中 Object 的 toString() 方法;
-- 方法來源 : description 是 NSObject 中定義的, 所有的方法都有該方法;
-- 默認方法 : description 默認方法返回 <類名: 地址>;
-- 輸出對象 : NSLog() 函數輸出一個對象, 其實輸出的是該對象的 description 方法;
-- 示例 : OCPerson * person, 打印 [person description] 和 person 輸出結果是一樣的;
description方法是NSObject類的一個實例方法,所有的Objective-C對象都有description方法,這是一個“自我描述”的方法,該方法通常用于實現這樣的一個功能:當程序員直接打印對象時,系統會輸出<FKPerson:16進制的首地址>,然而這個返回值并不能真正實現“自我描述”的功能,所以有時需要重寫此方法。