[英]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.