objective-c - 对象化妆,它是如何构建的?

标签 objective-c cocoa cocoa-touch

这些都是相当简单的问题,但在继续之前我想先弄清楚这些问题......

@interface BasicTire : NSObject {
}
@end

@interface SnowTire : BasicTire {
}
@end
  1. 当您调用 [SnowTire init] 时,包含的 [super init] 会调用 [BasicTire init],而 [BasicTire init] 又会调用 [NSObject init]? (即级联运行到父类/父类(super class)。

  2. 当您[SnowTire alloc]时,您正在创建一个新对象,其中包括其父类(super class)的功能。我的想法是否正确,您没有创建以某种方式链接的多个对象(即 SnowTire > BasicTire > NSObject)。

只是想检查一下...

加里

最佳答案

  1. 是的,通常初始化器调用父类(super class)初始化器。这是在 init 方法的实现中显式完成的。虽然可以调用同一类或其父类(super class)的其他初始化程序,但有必要确保 "designated initializer"总是有人打电话。
    如果一个对象没有实现 init (或有问题的初始化器),则调用父类(super class)中的对象(与任何其他方法一样)。这种情况并不罕见,因为在 Objectve-C 中实例变量总是初始化为零(在 alloc 中),因此通常不需要实现专门的 init

  2. alloc 只是分配内存并设置确定对象类的对象的“isa 指针”。您从中得到的是一个未初始化的对象(不是链表),它有空间容纳其所有实例变量(包括父类(super class))。

关于objective-c - 对象化妆,它是如何构建的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1471587/

相关文章:

ios - 使用文件夹引用而不是组创建纹理图集

ios - 在ios中以png格式保存签名图片

cocoa-touch - 创建今天特定小时和分钟的 NSDate

iOS全时后台服务-基于位置追踪

ios - 识别点击 iOS 网页内的链接

objective-c - 包含整数和字符串表示的字节数组

objective-c - 类似于 Xcode 4 中的渐变按钮栏

编辑主菜单后,Xcode 5 在保存时崩溃

ios - cocos2d 3.0如何优先处理触摸吞咽

ios - 以编程方式获取 Bundle Identifier