3

나는 ...이라고 생각합니다. 그러나 이후Objective-C 메타 클래스에 카테고리를 추가 할 수 있습니까?

NSStringFromClass(SomeClass)

당신이 할 수 ...

@interface  Class (ToString) 
@property (readonly) NSString* stringValue; 
@end 
@implementation Class (ToString) 
- (NSString*) stringValue { return NSStringFromClass(self); } 
@end 

및 사용 ...

SomeClass.stringValue 

난 ... 경우 대신 좋지 않을까 meta-heirarchy가 이것을 막을 수있는 좋은 이유가 있음을 확신 할 수 있습니다. (반 진실 인 것처럼 보이지만 Class (그리고 ProtocolsMethods 등)은 실제로 "진짜"Objects입니다 ... NSObjectObject으로 만드는 많은 "물건"이 "메타 클래스"에서 수행 될 수없는 경우.

사람은 /는 대안을 제공하는이 기능 차이에 빛을 흘릴 수 (즉, resolveClassMethod: 유사한 결과를 얻을 수있는 그?

+0

프로토콜 및 방법있다 **하지 ** 객체를 –

+0

을 프로토콜 클래스는 거의 사용되지 않습니다 사용 @alexgray :?. HTTP : // 오픈 소스 .apple.com/source/objc4/objc4-551.1/runtime/Protocol.h 전체 헤더가'#if __OBJC2__'로 묶입니다. –

답변

4

를 메타 클래스의 인스턴스 방법은 비 메타 클래스, 왜 그냥 클래스 메소드이기 때문에 단순히 원본 (비 메타) 클래스에 카테고리를 추가하지

@implementation NSObject (Name) 

+ (NSString *)className 
{ 
    return NSStringFromClass(self); 
} 

@end 
+0

이런,'NSObject'처럼 그들을 치료할 수 있다는 걸 잊어 버렸습니다! –