NSArray
- 배열은primitive type변수들을담는그릇
- NSArray는“객체”들을담는데사용
- 즉, 모든원소는객체이어야함
- 만일정수를넣고싶으면“정수객체”로변환시켜야함!
- 배열과마찬가지로크기를변경할수없음
-크기변경이필요한경우NSMutableArray사용
+ (id) arrayWithObjects: (id)firstObj, …;
NSArray *array;array = [NSArray arrayWithObjects: @"one", @"two", @"three", nil];// 3개의객체가array에들어감.// arrayWithObjects:는nil 객체를만날때까지객체리스트를삽임.// nil 객체는결국객체리스트의끝을나타내고NSArray객체에포함되지는않음
-(unsigned) count;
-(id) objectAtIndex: (unsigned int) index;
NSArray* array;array = [NSArrayarrayWithObjects: @”one”, @”two”, @”three”, nil];
int i;for(i=0; i < [array count]; i++ ) {NSLog(@”index %d has %@.”, i, [array objectAtIndex: i]);}[array objectAtIndex:208000]; // 오류!
*** Terminating app due to uncaught exception ‘NSRangeException’, reason: *** - [NSCFArrayobjectAtIndex:]: index (208000) beyond bounds (3)
NSMutableArray
- NSArray는추가/삭제가안됨=> NSMutatableArray사용
+(id) arrayWithCapacity: (unsigned) numItems; // factory method
-(void) addObject: (id) anObject; //원소를 추가할 때 쓰는 instance method
-(void) removeObjectAtIndex: (unsigned) index; // 원소삭제
…
NSMutableArray *array;array = [NSMutableArray arrayWithCapacity: 17];for(i =0; i <4; i++){Tire *tire = [Tire new];[array addObject: tire];}…[array removeObjectAtIndex: 1];…
Enumeration
- NSArray(혹은NSMutableArray)에서 index를 잘못 사용하면 Range Exception 발생
- enumerator를사용하면순차적으로각원소를추출할수있음
-(NSEnumerator*) objectEnumerator;
-(id) nextObject;
주의:
NSMutatableArray객체에대해서
enumerator를사용하는경우
객체삽입/삭제를하면안됨!
NSEnumerator *enumerator;enumerator = [array objectEnumerator];// 역순을원하면 reverseObjectEnumerator를사용id thingie;while( thingie = [enumerator nextObject] ) {NSLog(@"I found%@", thingie);}
'STUDY > Objective-C' 카테고리의 다른 글
[Objective C] NSDictionary , NSMutableDictionary (0) | 2010.06.24 |
---|---|
[Objective C] method 앞에 plus (+) , minus (-) (0) | 2010.06.24 |
[Objective C] NSArray , NSMutableArray, Enumeration (0) | 2010.06.24 |
[Objective C] NSMutableString (0) | 2010.06.24 |
[Objective C] NSString (0) | 2010.06.24 |
[MAC] Xcode 자동정렬 Tip (1) | 2010.06.24 |