我试图了解Objective-C中的Class
类型。请问Class类型和NSObject类型有什么不同?听起来像类型类似NSObject
类似的东西吗?
答案 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)
否NSObject
与Class
不同。
在Objective C中,类是对象。 NSObject
类型实例中的Class
类。说NSObject
属于Class
类型是正确的,就像您说NSObject
的实例属于NSObject
类型一样。
Class
也是一个对象,但它的类型是初学者确实不属于的元类。
答案 2 :(得分:1)
一个类是一个模板,例如一个人 对象是类的实例,例如鲍勃人类
NSObject是大多数Objective-C类的根类(例如NSTextField,NSButton等) 因此,NSButton继承了NSObject的属性,也是一个类(子类)。如果你创建一个按钮,那个按钮现在是一个类型为NSButton(class)的实例(对象),它继承自:NSControl:NSView:NSResponder:NSObject的顺序,降序。