NSNumber 基本
NSNumber 是一個儲存數字的 Object,NSNumber 不像 C 語言的 int ,不能直接拿來做加、減、乘、除,如果你想簡單一點使用數字的處理,可以使用另一個 Object : NSInteger。
首先介紹一下如何處理整數的問題。
宣告一個整數
- NSNumber *a = [NSNumber numberWithInt:1];
使用上面這句可以宣告一個整數,其值 = 1
分配 memory 給一個整數變數
- NSNumber *c = [[NSNumber alloc] init];
- c = [NSNumber numberWithInt:5];
整數相加
接著我宣告三個 NSNumber 物件,分別是 a = 1, b = 2, c,再將相加的結果,存到 c ,算式如 c = a + b。
要從 NSNumber 中將數字取出來的話,必須使用 [xxx intValue] 這個方式,所以程式中必須取得 [a intValue] 與 [b intValue],再將這兩個值加起來。
再來第 5 行 Code ,在 NSLog 中使用 %d 代表我要印出一個數字 ,跟上一句一樣的道理,我要取出 c 的值,所以使用 [c intValue]。
- NSNumber *a = [NSNumber numberWithInt:1];
- NSNumber *b = [NSNumber numberWithInt:2];
- NSNumber *c = [[NSNumber alloc] init];
- c = @([a intValue] + [b intValue]);
- NSLog(@" Sum = %d", [c intValue]);
- // Sum = 3
NSNumber 操作也有一個比較簡單的寫法,使用 a.intValue + b.intValue 也能有相加的效果。
- NSLog(@" sum = %d", (a.intValue + b.intValue + 10) );
NSLog 直接印出相加結果
在上一個範例中,如果我不想多建立一個變數 c ,這時我可以直接在 NSLog 中,將數字相加,然後印出,下面的程式中第三行與第五行,分別印出兩種變數型態 (字串與數字)。
- NSNumber *a = [NSNumber numberWithInt:1];
- NSNumber *b = [NSNumber numberWithInt:2];
- NSLog(@" sum = %d", ([a intValue] + [b intValue]) );
- NSLog(@" sum = %@", @([a intValue] + [b intValue]) );
NSInteger, NSUInteger
- NSUInteger : U 是指 unsigned 的意思,UInteger 就是 unsigned integer ,代表變數是一個非負整數。
- NSInteger : 代表變數是一個整數。
NSInteger 不像 NSNumber 這麼麻煩,想要做個相加還要用 [x intValue] 這樣,使用 NSInteger Object ,你就直接使用像 C 語言的 int ,直接操作即可。
Number forloop
一個基本的 for loop 寫法,執行 20 次。
- NSInteger i,n;
- n = 20;
- for (i = 0; i < n; i++ ) {
- NSLog(@" index = %lo", i);
- }
- //index = 1
- //index = 2
- //...
%lo 是指長整數的型態
NSInteger Array
C 語言中要使用 Int Array,可以宣告 int[] , or int* , Obj-C 也是用類似的方式。
- 使用 calloc 分配記憶體。
- NSInteger* myArray = (NSInteger*)calloc(20, sizeof(NSInteger));
- NSInteger i ,n;
- n = 5;
- for (i = 0; i < n; i++) {
- myArray[i] = i;
- }
- for (i = 0; i < n; i++) {
- NSLog(@"content = %d", myArray[i]);
- }
- //Output:
- //content = 0
- //content = 1
- //content = 2
- //content = 3
- //content = 4
回應 (Leave a comment)