문제

예를 들어:

@interface Fraction: NSObject {
...

언제 NSObject 사용됩니다 NSObject 다른 모든 클래스의 궁극적 인 학부모 수업?

사용 된 잘못된 용어에 대해 저를 자유롭게 수정하십시오.

도움이 되었습니까?

해결책

nsview의 서브 클래스를 작성한다면 다음을 쓸 것입니다.

@interface Fraction: NSView {...

내 수업이 nsview에서 상속되기 때문입니다. Objective-C의 클래스는 단일 부모 클래스에서만 상속됩니다. NSView (부모 클래스, NSRESPONDER)에서 체인을 올라갈 때 결국 NSObject에서 상속받을 수 있습니다.

귀하의 질문의 두 번째 부분에 대해 잘 모르겠습니다. 애플의 코코아 프레임 워크의 모든 클래스가 결국 nsobject에서 물려받는다고 생각하지만 저를 인용하지는 않습니다. Objective-C에서 다른 루트 객체가 없을 이유가 없습니다 (그렇지 않으면 대상 C는 Apple Systems에서만 사용됩니다). 그러나 코코아에서는 nsobject가 뿌리입니다.

다른 팁

모든 Cocoa 앱에서 런타임 클래스 트리를 검사하면 NSObject, Object, NSPROXY, NSMESSAGEBUILDER 및 5 가지 루트 클래스가 있습니다. nszombie.

앱의 대부분의 일반 객체는 nsobject의 후손입니다. Object는 Objective-C의 초기 시절부터 원래 루트 클래스이며 다음에 Enterprise Objects 프레임 워크를 개발할 때 NSObject에 의해 대체되었습니다.

NSMessageBuilder는 메시지 전달을 위해 런타임에 사용됩니다. NSPROXY는 분산 객체 구현에 의해 다른 프로세스 또는 다른 호스트에서 개체로 보내기 위해 마샬링 메시지를 처리하기 위해 사용됩니다. nszombie 메모리 누출 디버깅에 사용되는 클래스입니다.

Cocoa에는 NSOBJECT와 NSPROXY의 두 가지 루트 클래스가 있습니다.

nsObject는 거의 모든 코코아 물체의 루트 클래스입니다.

NSPROXY는 다른 객체 또는 아직 존재하지 않는 객체의 스탠드로 작용하는 객체에 대해 API를 정의하는 추상 슈퍼 클래스이며 NSDistantObject와 같은 클래스의 루트 클래스입니다.

두 클래스 모두 NSObject 프로토콜을 구현합니다.

루트 클래스가없는 자신의 목표 C 클래스를 작성하는 것도 가능하지만, 그렇지 않을 것이며, NSObject 프로토콜을 구현하지 않는 한 Cocoa와 함께 사용할 수 없을 것입니다. 그리고 그럼에도 불구하고 그것은 모호한 사용 일 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top