iOS 修饰符~ NS_DESIGNATED_INITIALIZER

//联系人:石虎QQ:1224614774昵称:嗡嘛呢叭咪哄

一、概念

@interfaceA : NSObject

- (instancetype)initDesignatedNS_DESIGNATED_INITIALIZER;

- (instancetype)initUndesignated;

@end

@implementationA

- (instancetype)init

{

return([selfinitUndesignated]);

}

- (instancetype)initDesignated

{

return(self= [superinit]);

}

- (instancetype)initUndesignated

{

return(self= [selfinitDesignated]);

}

@end

@interfaceB : A

- (instancetype)initDesignatedBNS_DESIGNATED_INITIALIZER;

- (instancetype)initUndesignatedB;

@end

@implementationB

- (instancetype)initDesignated

{

return[selfinitUndesignatedB];

}

- (instancetype)initDesignatedB

{

return(self= [superinitDesignated]);

}

- (instancetype)initUndesignatedB

{

return([selfinitDesignated]);

}

@end

最后一个函数initUndesignatedB里面这样调用不会有警告,其实很好理解。

1.因为self没有实现initUndesignated,所以会调用super的initUndesignated方

2.super的initUndesignated需要调用initDesignated方法

3.子类实现了initDesignated方法,所以最终回调用到self的initDesignated方法,这当然不会有什么问题了

谢谢!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容