티스토리 뷰

NSObject에 정의되어 있는 setValue:forKey에서 setValue가 nil일 경우 처리함.
Cocoa 3rd RaiseMan Application에서 사용.
다음은 책의 내용중 일부.

NSObject에 정의된 이 메서드가 예외를 발생시키기 때문에 사용자가 ExpectedRaise필드를 비워 두면 여러분의 객체는 예외를 발생시킬 것이다. 일반적으로 setNilValueForKey:를 재정의해서 인스턴스 변수를 어떤 기본 값으로 정한다. 이 경우 Person 클래스에 있는 이 메서드를 재정의하여 expectedRaise를 0.0으로 설정한다. 다음 메서드를 Person.m에 추가하자.


- (void)setNilValueForKey:(NSString *)key {

if ([key isEqual:@"expectedRaise"]) {

[self setExpectedRaise:0.0];

} else {

[super setNilValueForKey:key];

}


}


위의 메서드를 재정의 하지 않은 상태에서 예제의 Raise 입력부를 비우면 다음과 같이 예외가 발생한다.
스크린샷 2009-09-09 오후 2.52.06
댓글
댓글쓰기 폼