NSArray

NSArray

main.m
#import <Foundation/NSArray.h>
#import <Foundation/NSString.h>
#import <Foundation/NSAutoreleasePool.h>
#import <Foundation/NSEnumerator.h>
#import <stdio.h>
void print( NSArray *array ) {
NSEnumerator *enumerator = [array objectEnumerator];
id obj;
while ( obj = [enumerator nextObject] ) {
printf( "%s\n", [[obj description] cString] );
}
}
int main( int argc, const char *argv[] ) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSArray *arr = [[NSArray alloc] initWithObjects:
@"Me", @"Myself", @"I", nil];
NSMutableArray *mutable = [[NSMutableArray alloc] init];
// enumerate over items
printf( "----static array\n" );
print( arr );
// add stuff
[mutable addObject: @"One"];
[mutable addObject: @"Two"];
[mutable addObjectsFromArray: arr];
[mutable addObject: @"Three"];
// print em
printf( "----mutable array\n" );
print( mutable );
// sort then print

[mutable sortUsingSelector: @selector( caseInsensitiveCompare: )];
print( mutable );
// free memory
[arr release];
[mutable release];
[pool release];
return 0;
}
output
----static array
Me
Myself
I
----mutable array
One
Two
Me
Myself
I
Three
----sorted mutable array
I
Me
Myself
One
Three
Two
陣列有兩種(通常是 Foundation classes 中最資料導向的部分),NSArray 跟
NSMutableArray,顧名思義,mutable(善變的)表示可以被改變,而 NSArray
則不行。這表示你可以製造一個 NSArray 但卻不能改變它的長度。
你可以用 Obj, Obj, Obj, ..., nil 為參數呼叫建構子來初始化一個陣列,其中 nil 表
示結尾符號。
排序(sorting)展示如何用 selector 來排序一個物件,這個 selector 告訴陣列用
NSString 的忽略大小寫順序來排序。如果你的物件有好幾個排序方法,你可以使
用這個 selector 來選擇你想用的方法。
在 print method 裡,我使用了 description method。它就像 Java 的 toString,會回
傳物件的 NSString 表示法。
NSEnumerator 很像 Java 的列舉系統。while ( obj = [array objectEnumerator] ) 行得
通的理由是 objectEnumerator 會回傳最後一個物件的 nil。在 C 裡 nil 通常代表
0,也就是 false。改用 ( ( obj = [array objectEnumerator] ) != nil ) 也許更好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值