簡體   English   中英

InitWithCoder,[super init]還是[super initWithCoder]?

[英]InitWithCoder, [super init] or [super initWithCoder]?

我可以問我應該使用哪個版本,在我的舊應用程序中,我似乎使用“B”但是當我在網上查看很多示例時,我看到很多版本看起來像“A”。

// A
- (id)initWithCoder:(NSCoder *)decoder {
    self=[super initWithCoder:decoder];
    if(self) {
        ...

要么

// B
- (id)initWithCoder:(NSCoder *)decoder {
    self=[super init];
    if(self) {
        ...

取決於超類是否符合NSCoding協議。 如果是,則必須調用[super initWithCoder:decoder] 如果沒有,則必須調用超類的指定初始化程序。

例如,如果您的類是NSObject的直接子類,那么您將調用[super init]NSObject的指定初始化程序,因為NSObject不符合NSCoding協議。

如果超類采用NSCoding (可能並非總是如此),請始終調用

[super initWithCoder:decoder]

否則調用其指定的初始化程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM