Foundation框架基本數據類型

NSNubmerapp

NSNumber是一個類,該類中存在多種處理數值的方法,可直接建立該類的實例變量this

 1 // 定義3個NSNumber類型的變量
 2 NSNumber *myNumber, *floatNumber, *intNumber
 3 
 4 // 頂一個一個NSInteger的變量,NSInteger不是對象,而是使用typedef定義的一種數據類型
 5 NSInteger myInt
 6 
 7 // 實例化一個NSNumber類,併爲其設定一個100的整形數值,將這個類實例賦給intNumber
 8 intNumber = [NSNumber numberWithInteger:100];
 9 
10 // 調用NSNumber類中的integerValue方法獲取整數值賦值給NSInteger類型變量myInt
11 myInt = [intNumber integerValue];

 

在上述例子中,integerValue只能獲取integer類型的變量。spa

也能夠經過手動分配內存的方式建立NSNumber類實例,如:指針

1 // 建立一個包含整數類型,值爲50的NSNumber實例變量
2 NSNumber *myNumber = [[NSNumber alloc] initWithInt: 50];

 

注意,經過手動分配內存方式建立NSNumber實例變量的實例不能修改其值,不然會報錯。code

NSString對象

在Object-c中建立一個字符串變量很是簡單,如:@"program "blog

可是注意,這裏的字符串變量是常量,即一旦定義後,就不能夠改變其值。它其實是NSConstantString類的實例,該類是NSString的子類。ip

在NSLog中,能夠經過%@來輸出一個字符串常量內存

1 NSString *myStr = @"this is a string";
2 NSLog(@"%@", myStr);

 

%@不單單能夠顯示字符串,還能夠用它來打印一個對象。字符串

當用%@來打印一個對象時,該對象會自動調用description方法,默認會打印出該對象的類名,以及該對象在內存中的地址,能夠經過重寫description方法來更改這一默認行爲。

1 NSString *str1 = @"string1";
2 NSString *str2 = @"string2";
3 NSString *ref;
4 
5 ref = [NSString stringWithString: str1];
6 str1 = [str1 uppercaseString];
7 str2 = [stringByAppendingString: str1];
8 ref = [str2 uppercaseString];

 

上述代碼首先建立了3個NSString類型的常量變量

當更改其中任意一個常量值的時候,實際上是更新了該類型所自定的內存地址,即指向了新的地址從而達到更新值的效果。

[NSString stringWithString: str1];

該語句會真是的去建立一個新的對象,該對象中值的地址會指向str1的內存地址

ref = str1;

只是簡單的建立了一個指向str1對象的內存地址指針

注,上述所說的常量是指存儲在內存中的值是常量,即存儲在內存中的string1和string2是不可變動,而str一、str2和ref所指向的內存地址是可變的。在上述各個變動值的過程實際上是建立了一個新的NSString對象並對其進行初始化操做。

第五行中系統建立一個新的對象並初始化其值爲str1所指向的值賦給ref

第八行一樣也是建立一個新的對象,但此時第五行建立的內存已經沒法被引用了,不過沒必要擔憂,系統會自動對其銷燬。

在NSString類中,一些方法在調用或返回時須要提供一個範圍參數,Object-C提供了一種特殊類型:NSRange,這種類型其實是定義的一個結構,該結構含有兩個元素:location和length。這兩個元素都是NSUinteger類型的變量。

1 subRange = [str1 rangeOfString: @"string A"]; 
2 NSLog (@"String is at index %lu, length is %lu", subRange.location, subRange.length);

 

 

可經過NSMutableString類建立一個字符可變的對象,該類屬於NSString的子類,因此該類的實例能夠調用NSString類中定義的全部方法。

這裏所說的可變指的是真正更改內存中存儲的值

 1 #import <Foundation/Foundation.h>
 2 int main (int argc, char * argv[]) {
 3     @autoreleasepool {
 4         NSString *str1 = @"This is string A"; 
 5         NSString *search, *replace;
 6         NSMutableString *mstr;
 7         NSRange substr;
 8         // Create mutable string from nonmutable
 9         mstr = [NSMutableString stringWithString: str1]; 
10         NSLog (@"%@", mstr);
11         // Insert characters
12         [mstr insertString: @" mutable" atIndex: 7];
13         NSLog (@"%@", mstr);
14         // Effective concatentation if insert at end
15         [mstr insertString: @" and string B" atIndex: [mstr length]];
16         NSLog (@"%@", mstr);
17         // Or can use appendString directly
18         [mstr appendString: @" and string C"];
19         NSLog (@"%@", mstr);
20         // Delete substring based on range
21         [mstr deleteCharactersInRange: NSMakeRange (16, 13)];
22         NSLog (@"%@", mstr);
23         // Find range first and then use it for deletion
24         substr = [mstr rangeOfString: @"string B and 「];
25         if (substr.location != NSNotFound) { 
26             [mstr deleteCharactersInRange: substr];
27              NSLog (@"%@", mstr);
28         }
29         // Set the mutable string directly
30         [mstr setString: @"This is string A"];
31         NSLog (@"%@", mstr);
32         // Now let’s replace a range of chars with another
33         [mstr replaceCharactersInRange: NSMakeRange(8, 8) withString: @"a mutable string"];
34         NSLog (@"%@", mstr); // Search and replace
35         search = @"This is"; replace = @"An example of";
36         substr = [mstr rangeOfString: search];
37         if (substr.location != NSNotFound) {
38             [mstr replaceCharactersInRange: substr withString: replace];
39             NSLog (@"%@", mstr);
40         }
41         // Search and replace all occurrences
42         search = @"a"; replace = @"X";
43         substr = [mstr rangeOfString: search];
44         while (substr.location != NSNotFound)
45         {
46             [mstr replaceCharactersInRange: substrwithString: replace];
47             substr = [mstr rangeOfString: search];
48         }
49         NSLog (@"%@", mstr);
50     }
51     return 0; 
52 }

 

行6建立了一個NSMutableString類型實例變量mstr

行9將mstr指向的內存中的值設置爲str1所指向的內存地址中所存儲的值。當stringWithString方法返回給一個NSMutableString類型變量時會返回一個值可變的對象,而該方法返回給一個NSString類型變量時,返回的是一個值不可變的對象。

行12在mstr字符串中的指定位置插入給定的字符串,該方法沒有返回值,由於它直接對mstr對象進行操做。

 

NSArray

相關文章
相關標籤/搜索