【问题标题】:Class without superclass in Objective-C [duplicate]Objective-C中没有超类的类[重复]
【发布时间】:2014-03-06 10:32:59
【问题描述】:

是否可以在没有超类的情况下在 Objective-C 中创建类。

如果我创建类似的东西

@interface Samp
@end

我收到错误消息:“未指定基类而定义了类 Samp”。 NSProxy 是怎么编译的?

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    迂腐的答案是肯定的,你可以。您只需要将您的类设为根类,您可以使用编译器属性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

    【讨论】:

      【解决方案2】:

      NSProxy 怎么编译?

      NSProxy 类很特别——它是 Cocoa 的两个公共根类之一(NSObject 是另一个)。如果您必须定义自己的根类,this answer tells you how to do it。但是,实际上应该没有理由实现自己的根类。

      【讨论】:

        猜你喜欢
        • 2012-10-28
        • 2010-12-11
        • 2012-11-27
        • 1970-01-01
        • 2011-07-31
        • 2011-10-07
        • 2015-09-25
        • 1970-01-01
        相关资源
        最近更新 更多