首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InitWithCoder,[超级初始化]还是[超级initWithCoder]?

InitWithCoder,[超级初始化]还是[超级initWithCoder]?
EN

Stack Overflow用户
提问于 2011-07-26 02:09:28
回答 2查看 4.3K关注 0票数 12

我可以问一下我应该使用哪个版本吗?在我的旧应用中,我似乎使用了"B“,但当我在网上查看大量示例时,我看到了很多看起来像"A”的版本。

代码语言:javascript
复制
// A
- (id)initWithCoder:(NSCoder *)decoder {
    self=[super initWithCoder:decoder];
    if(self) {
        ...

代码语言:javascript
复制
// B
- (id)initWithCoder:(NSCoder *)decoder {
    self=[super init];
    if(self) {
        ...
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-26 02:11:40

如果超类采用NSCoding (很可能是这样,但并不总是这样),请始终调用

代码语言:javascript
复制
[super initWithCoder:decoder]

否则调用其指定的初始值设定项。

票数 12
EN

Stack Overflow用户

发布于 2011-07-26 02:14:34

取决于超类是否符合NSCoding协议。如果是这样,您必须调用[super initWithCoder:decoder]。如果没有,你必须调用超类的指定初始值设定项。

例如,如果您的类是NSObject的直接子类,则可以调用[super init],这是NSObject指定的初始化器,因为NSObject不符合NSCoding协议。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6820415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档