【发布时间】:2014-03-06 10:32:59
【问题描述】:
是否可以在没有超类的情况下在 Objective-C 中创建类。
如果我创建类似的东西
@interface Samp
@end
我收到错误消息:“未指定基类而定义了类 Samp”。 NSProxy 是怎么编译的?
【问题讨论】:
标签: objective-c
是否可以在没有超类的情况下在 Objective-C 中创建类。
如果我创建类似的东西
@interface Samp
@end
我收到错误消息:“未指定基类而定义了类 Samp”。 NSProxy 是怎么编译的?
【问题讨论】:
标签: objective-c
迂腐的答案是肯定的,你可以。您只需要将您的类设为根类,您可以使用编译器属性objc_root_class 来做到这一点。
__attribute__((objc_root_class))
@interface Samp
@end
或使用便利宏NS_ROOT_CLASS
NS_ROOT_CLASS
@interface Samp
@end
这与NSProxy 所做的相同。
NS_ROOT_CLASS
@interface NSProxy <NSObject> {
Class isa;
}
现在,除非您正在做一些非常具体且超出计划的事情,否则我不明白您为什么要这样做。
Juts 使您的类从现有的根类继承,例如 NSObject(最常见的)或 NSProxy。
【讨论】:
NSProxy怎么编译?
NSProxy 类很特别——它是 Cocoa 的两个公共根类之一(NSObject 是另一个)。如果您必须定义自己的根类,this answer tells you how to do it。但是,实际上应该没有理由实现自己的根类。
【讨论】: