【问题标题】:Class type and NSObject type类类型和 NSObject 类型
【发布时间】:2014-07-08 12:55:59
【问题描述】:

我试图理解 Class 在 Objective-C 中的类型。请问Class类型和NSObject类型有什么区别?听起来 Class 类型做了类似NSObject 的事情,对吗?

【问题讨论】:

    标签: objective-c nsobject


    【解决方案1】:

    我相信这个问题已经被问过好几次了......但我找不到任何旧实例,所以无论如何。

    与类 C++ 语言不同,类是 OBJC 中的实际常规对象实例。 当您调用[NSObject class] 时,它会返回一个包含类方法和额外信息的活动对象。这些是由编译器合成的,这实际上提供了所有类相关的功能。

    Class 是这些类对象的类型。

    还有一件事。因为Class对象是对象,所以它们也有类对象,这些被称为元类。有关更多详细信息,请参见此处: http://www.cocoawithlove.com/2010/01/what-is-meta-class-in-objective-c.html

    此外,您可能会感到困惑,因为 Cocoa 中的大多数类型都使用 NSObject 作为根类。但这只是一个约定,实际上一个类不必继承NSObject

    【讨论】:

      【解决方案2】:

      NSObjectClass 不同。

      在 Objective C 中,类是对象。 NSObject 之类的类在 Class 类型的实例中。说NSObjectClass 类型是正确的,就像你会说NSObject 的一个实例是NSObject 类型一样。

      Class 也是一个对象,但它的类型是元类,真的不适合初学者。

      【讨论】:

        【解决方案3】:

        一个类是一个模板,例如一个人 对象是类的实例,例如鲍勃人类

        NSObject 是大多数 Objective-C 类的根类(例如 NSTextField、NSButton 等) 所以,NSButton 继承了 NSObject 的属性,也是一个类(子类)。如果您创建一个按钮,该按钮现在是一个实例(对象),类型为 NSButton(类),它继承自: NSControl : NSView : NSResponder : NSObject 按降序排列。

        更多信息: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-24
          • 1970-01-01
          • 1970-01-01
          • 2018-11-21
          • 1970-01-01
          相关资源
          最近更新 更多