NSDictionary같은, Cocoa의 Collection 객체를 다룰 경우에 다음과 같은 문법을 왕왕 쓰게 된다 :
1: NSDictionary* dic = [NSDictionary dictionaryWithObjectsAndKeys:
2: @"value1", @"key1",
3: @"value2", @"key2",
4: @"value3", @"key3",
5: nil];
헌데, 위와 같은 객체에 nil 값을 넣어야 할 경우가 생기면 어떻게 해야 할까? 이렇게? :
1: NSDictionary* dic = [NSDictionary dictionaryWithObjectsAndKeys:
2: @"value1", @"key1",
3: nil, @"key2",
4: @"value3", @"key3",
5: nil];
위와 같이 코딩했을 경우 언뜻 보면 별 이상이 없는 것처럼 보이지만, 실제로 dic 객체를 뒤져보면 key1 / value1만 들어있는 것을 볼 수 있다. 왜냐고? dictionaryWithObjectsAndKeys 메서드는 단순히 nil이 있을 경우 입력 인자가 끝났다고 판단하고, 그 뒤에 나오는 항목은 무시하기 때문이다.
그러면 컬렉션에 nil을 넣으려면 어떻게 처리해야 하는가? 이렇게 하면 된다 :
1: NSDictionary* dic = [NSDictionary dictionaryWithObjectsAndKeys:
2: @"value1", @"key1",
3: [NSNull null], @"key2",
4: @"value3", @"key3",
5: nil];
Cocoa의 Collection 객체는 관례상 nil 값을 허용하지 않는다. 실제 [NSNull null]의 값도 nil과는 다르므로, Collection 내부의 값이 nil인지 아닌지 평가할 경우에도 NSNull 객체를 사용해서 평가해야 한다.
'TechLog' 카테고리의 다른 글
맥, Xcode의 키보드 설정을 윈도우 스타일로 변경하기 (0) | 2011.03.30 |
---|---|
iOS 시뮬레이터의 네트워크 인터페이스 (0) | 2011.03.30 |
Objective-c에서 메시지 송신 방식에 따른 실행 속도 비교 (0) | 2011.03.30 |
AutoReleasePool/Gabage Collector의 성능 비교 (0) | 2011.03.30 |
Nib2objc : XIB 파일을 Objective-c 코드로 변환하는 유틸리티 (3) | 2011.03.30 |