2009-11-30 5 views
0

수업에 문제가 있습니다. 이것은 내 코드입니다.목표 C 클래스 문제

이 경우 프로그램에서 로깅을 수행 할 것이라고 생각하지만 그렇지 않습니다. 왜 안되는지 알고 있니?

+0

첫 번째 밑줄로 ivar 이름을 시작하지 마십시오. 이것이 Apple의 내부 코딩 규칙이며 이름 충돌의 위험에 노출됩니다. – NSResponder

+0

@NSResponder 인스턴스 변수가 아닌 메서드 이름에만 적용됩니다 ... – bbum

답변

3

이유는 if ([_shapeClass isKindOfClass:[HWRectangle class]])

_shapeClass 당신이 정말 수준의 비교를 테스트하는 경우가 아니면, 테스트 클래스의 예를해야한다. 따라서이 방법은 클래스 비교를위한 클래스가 아니라 클래스 비교를위한 인스턴스입니다.

보너스 포인트를 들어, 형식 문자열은 다음과 같아야합니다 (당신은 NSObject의 방법을 (당신이하지 말아야하는) 오버라이드 (override)하지 않는 한) NSLog(@"Class created as: %@", [_shapeClass description])

+0

asker가 찾고있는 메서드는 isKindOfClass :가 아니라'isSubclassOfClass :'입니다. – Chuck

0

은 isKindOfClass 변수의 클래스를 확인합니다. 당신은 shapeCalls = [HWRectangle 클래스]라고 말합니다. [HWRectangle class]의 결과는 "Class"클래스입니다. 따라서 이것을 HWRectangle의 클래스와 비교하면 둘이 동일하지 않다는 것을 알 수 있습니다.