2010-06-23 1 views
2

이 프로토콜 여기NSObject의를 이해하는 방법, 그것은 당신이 NSObject.h에서 다음을 참조 여기</p> <p>// 1을 제기 할 수 있습니다 모두 프로토콜 및 인터페이스

@protocol NSObject 

// 2.되는 것은 인터페이스입니다 위의 프로토콜을 따르십시오.

@interface NSObject <NSObject> { 
    ... 

// 3. 아래의 "()"의미는 무엇입니까? NSCoderMethods는 프로토콜입니다

NSObject는 내가 이해해야하는 중요한 요소입니다. 왜 이렇게 설계 되었습니까? ObjC의 모든 구체적인 클래스 요즘, NSObject의에서 구현을 상속 등 참조 카운팅 등의 기능을 지원하고 런타임에게 유형 검사를하기 때문에

답변

4

1.

그것은 클래스 (인터페이스)입니다. NSObject의이 -retain-performSelector: 등의 방법을 지원하는 유일한 루트 클래스가 아니기 때문에

2.


이제 프로토콜 ...이 존재한다.

중요한 클래스 중 하나는 NSProxy입니다. 이는 실제 개체에 메시지를 전달하기위한 프록시 역할을합니다.

NSProxy의 대상은 일반적으로 NSObject이므로 인터페이스는 -retain-performSelector: 등의 메소드도 지원해야합니다. 그러나 NSProxy는 이 없기 때문에 NSObject에서 상속받을 수 없습니다. 둘 사이에는 관계가 있습니다.

형제 관계를 표현하기 위해 불행하게도 NSObject라고도하는 동일한 프로토콜을 채택했습니다. NSObject의 제작

이 프로토콜은 사용자 정의 프로토콜을 추가하는 방법을 추가

@protocol Foo <NSObject> 
... 

3.

It's a category, 모든 일반적인 NSObject의 작업을 지원하기 위해 채택을 요청할 수있는 장점이있다 NSObject에 대한 구현.

+0

대단히 감사합니다. 자바에서는 Object가 NSObject와 매우 비슷합니다. 모든 Java 클래스는 Object를 상속합니다. ObjectC에서 명시 적으로 NSObject에서 상속해야합니다. – Forrest