2015-01-06 4 views
0

나는 Ray Wenderlich AFNetworking tutorial에서 찾고, 나는 내가 보지 못했지만있는 NSDictionary를 하위 클래스의 방법을 통해 온 전에 :너무 : @implementation있는 NSDictionary (날씨)

첫째 :

@implementation NSDictionary (weather) 
다음 다른 파일에

는 :

@implementation NSDictionary (weather_package) 

이것은 포함있어 다른 파일에 그냥 "일"에 보인다. 가장 수수께끼 같은 것은이 클래스를 사용하는 클래스에서 정의 된 NSDictionary가 "weather_package"버전과 해당 컨테이너 내에서 "날씨"버전과 일치하는 것입니다.

누군가 여기서 일어나는 일의 이름을 알려줄 수 있습니까? 필자는 코드 검토에서 어떻게 작동하는지 명확하게 밝히지 않았습니다. 특히 컴파일러가 헤더에 파일을 포함하는 것 외에도 명시 적으로 참조가 이루어지지 않았으므로 어떻게 적용할지 결정합니다.

도움 주셔서 감사합니다.

답변

2

이것은 하위 클래스가 아닙니다. 클래스를 사용하여 클래스를 확장합니다. 이 클래스는 하위 클래스를 만들지 않고 기존 클래스에 새로운 기능을 추가하는 데 사용됩니다.

카테고리는 원래 구현 소스 코드 (예 : 표준 Cocoa 또는 Cocoa Touch 클래스)가없는 경우에도 모든 클래스에 대해 선언 할 수 있습니다. 카테고리에서 선언하는 모든 메소드는 원래 클래스의 모든 인스턴스뿐만 아니라 원래 클래스의 서브 클래스에서도 사용할 수 있습니다. 런타임에 카테고리에 의해 추가 된 메소드와 원래 클래스에 의해 구현 된 메소드 사이에는 차이가 없습니다.

카테 자세한 내용은

@interface ClassName (CategoryName) 

@end 

@implementation ClassName (CategoryName) 

@end 

과 같이 정의 할 수는 https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/CustomizingExistingClasses/CustomizingExistingClasses.html#//apple_ref/doc/uid/TP40011210-CH6-SW1

+0

감사합니다! 이것은 매우 도움이됩니다. –