0x01 NSArray
NSArray是一個Cocoa類,用來存儲對象的有序清單。
NSArray可存儲的對象
在NSArray中可以放入任意類型的對象:NSString、Car、Shape、Tire或者其他想要存儲的對象,甚至可以是其他數組或字典對象。
NSArray類的限制
NSArray類有三個限制:
1、一旦建立了一個包含特定數量對象的數組,它就不能增加或删除任何元素。但數組中的對象可以改變;
2、隻能存儲Objective-C的對象,不能存儲原始C語言的基礎資料類型(int、float、enum、struct)和NSArray中的随機指針;
3、不能在NSArray中存儲nil(對象的零值或NULL值)。
NSArray的建立
可以通過類方法arrayWithObjects:建立一個新的NSArray。發送一個以逗号分隔的對象清單,在清單結尾處添加nil代表清單結束:
NSArray *array = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];
也可以用數組字面量格式來建立一個數組,此時不必在清單結尾添加nil:
NSArray *array2 = @[@"one", @"two", @"three"];
NSArray可用的對象方法
count
count:方法可以獲得一個NSArray所包含的對象個數。
- (NSUInteger)count;
objectAtIndex
objectAtIndex:可以獲得一個NSArray特定索引處的對象。
也可以通過數組字面量來通路NSArray,和C語言中通路數組項的文法類似。
- (id)objectAtIndex:(NSUInteger)index;
id *myObject = array1[1];
數組内容的輸出
結合計數和取值的方法, 可以輸出NSArray中的内容,當然也可以用數組字面量的文法來寫代碼:
for (NSInteger i = 0; i < [array count]; i++)
{
NSLog (@"index %d has %@.",i, [array objectAtIndex:i]);
//Equal to : NSLog (@"index %d has %@.",i, array[i]);
}
##
#Output:
#index 0 has one.
#index 1 has two.
#index 2 has three.
##
數組的拆分與合并方法
componentsSeparatedByString
使用componentsSeparatedByString:方法可以切分在指定位置切分NSString并分段存入NSArray。
NSString *string = @"oop:ack:bork:greeble:ponies";
NSArray *chunks = [string componentsSeparatedByString: @":"];
componentsJoinedByString
使用componentsJoinedByString:方法可以将NSArray中的元素合并成NSString。
string = [chunks componentsJoinedByString: @" :- ) "];
0x02 可變數組
arrayWithCapacity
NSMutableArray通過類方法arrayWithCapacity來建立新的可變數組。參數numItems是數組容量,這個容量隻是給編譯器一個建議值,Cocoa不會用該數值來限制數組的大小:
+ (id) arrayWithCapacity: (NSUInteger) numItems;
//示例
NSMutableArray *array = [NSMutableArray arrayWithCapacity: 17];
addObject
使用addObject:方法可以在可變數組末尾添加對象。
- (void) addObject: (id) anObject;
//示例
for (NSInteger i = 0; i < 4; i++)
{
Tire *tire = [Tire new];
[array addObject: tire];
}
1、NSArray的索引是從0開始的,這個和C語言數組是一樣的。
2、沒有數組字面量文法可以用來建立NSMutableArray對象!