类类型和NSObject类型

时间:2014-07-08 12:56:00

标签: objective-c nsobject

我试图了解Objective-C中的Class类型。请问Class类型和NSObject类型有什么不同?听起来像类型类似NSObject类似的东西吗?

3 个答案:

答案 0 :(得分:2)

我相信已经多次询问过了......但是我无法找到任何旧的实例,所以无论如何。

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

Class是这些类对象的类型。

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

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

答案 1 :(得分:1)

NSObjectClass不同。

在Objective C中,类是对象。 NSObject类型实例中的Class类。说NSObject属于Class类型是正确的,就像您说NSObject的实例属于NSObject类型一样。

Class也是一个对象,但它的类型是初学者确实不属于的元类。

答案 2 :(得分:1)

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

NSObject是大多数Objective-C类的根类(例如NSTextField,NSButton等) 因此,NSButton继承了NSObject的属性,也是一个类(子类)。如果你创建一个按钮,那个按钮现在是一个类型为NSButton(class)的实例(对象),它继承自:NSControl:NSView:NSResponder:NSObject的顺序,降序。

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