好吧,所以我理解一个对象是一个必须分配和初始化的类的实例,但类本身是对象吗?
我知道当你创建一个新类时,它是一个其他的实例,比如NSObject.所以,如果这使它成为一个类,那么对象不仅可以容纳变量和方法,还可以容纳其他对象,对吧?
对不起,这可能是非常基本的,但我正在读两本关于可可和xcode的书,这一点有点不清楚(可能是因为我缺乏其他语言的经验).
我的理解是,对象和类在Objective-C的只是结构.
他们分别只是:
struct objc_class *
Run Code Online (Sandbox Code Playgroud)
和:
struct objc_object *
Run Code Online (Sandbox Code Playgroud)
问题#1:
objc_msgSend(id self, SEL _cmd);
Run Code Online (Sandbox Code Playgroud)
id 据我所知是类型 struct objc_object *
但是当我们调用类方法时,类是一个类struct objc_class *,
我希望它会引起问题或者喊出某种警告,例如"嘿,这里的错误类型,我的朋友".
但事实并非如此.
这只是为了满足我的好奇心,因为即使没有完全理解这一点,它似乎也没有给我带来任何麻烦(到目前为止).但我想深入挖掘并学习基本原理/"特点".
问题2:
由于根据我的经验没有警告(与问题#1有关),因此我不太确定它们可以互换使用.
能struct objc_class *和struct objc_object * 真正使用互换?
如是:
你能告诉我一个场景和样本何时/如何/为什么我们需要互换使用这些?
什么是好处(如果有的话),缺点(如果有的话)和" 陷阱 "(需要注意的事项;如果有的话)这样做?