2010-03-14 2 views
3

NSDecimalNumber NSNumber의 하위 클래스이며 NSNumber 인스턴스에 대해 예상대로 모든 NSNumber 메서드를 구현할 수 있습니다.NSNumber가 예상되는 곳이면 어디에서나 NSDecimalNumber를 사용할 수 있습니까?

감안할 때 NSNumber를 예상하는 코드에 NSDecimalNumbers를 부여해도됩니까?

가능한 유일한 문제는 인수의 NSNumber의 인스턴스임을 확인하는 코드가 될 수도 있지만의 NSNumber 클래스 클러스터이기 때문에, 이런 코드는 인스턴스가 서브 클래스의 NSNumber의이 있는지 확인해야하고, 것입니다 NSDecimalNumber 인스턴스는 동일한 테스트를 통과해야합니다.

답변

7

예.

가능한 유일한 문제는 인수의 NSNumber의 인스턴스임을 확인하는 코드가 될 수도 있지만의 NSNumber 클래스 클러스터이기 때문에, 이런 코드는 인스턴스의 NSNumber의 서브 클래스가 있는지 확인해야하고, 것입니다 NSDecimalNumber 인스턴스는 동일한 테스트를 통과해야합니다. isKindOfClass:이 오면 어디 개체가 대신 integerValue 같은 메시지에 응답 여부를 테스트하는 것이 좋습니다 있지만,의

.

+0

코어 플롯 프레임 워크에는 제공된 입력 (NSNumbers 또는 NSDecimalNumbers)의 정밀도에 따라 두 개의 렌더링 경로가 있습니다. 이를 위해 [number isKindOfClass : [NSDecimalNumber class]]를 사용하여 둘 사이를 구별합니다. –