objective-c – 重新定义父类声明为NS_UNAVAILABLE的初始化程序
发布时间:2020-12-16 06:49:55 所属栏目:百科 来源:网络整理
导读:我可以批准在初始化程序中找到 Objective-c的继承有多糟糕,但我不会.在这种情况下,我只想重新定义一个以前由父类声明为NS_UNAVAILABLE的初始化器.如: @interface Parent : NSObject// Unavailable- (instancetype)init NS_UNAVAILABLE;// Some other (appro
我可以批准在初始化程序中找到
Objective-c的继承有多糟糕,但我不会.在这种情况下,我只想重新定义一个以前由父类声明为NS_UNAVAILABLE的初始化器.如:
@interface Parent : NSObject // Unavailable - (instancetype)init NS_UNAVAILABLE; // Some other (appropriate) initialiser - (instancetype)initWithWhatever:(id)whatever NS_DESIGNATED_INITIALIZER; @end 对儿童初始化者的任何调用都需要传播到父指定的初始化者是有意义的.让我们说默认参数对子类有意义,因此: @interface Child : Parent // Propagates to initWithWhatever: - (instancetype)init NS_DESIGNATED_INITIALIZER; @end 即使初始化程序被子类重新声明,xcode似乎仍然认为它不可用.有没有解决的办法? 解决方法
看起来这种行为在Xcode 8中得到修复(在8.1中测试).
我也有一些笔记: >要使您的Child实现完全完成,您应该覆盖initWithWhatever或使其不可用.因为Child当然会从Parent继承这个初始化程序. 所以.从现在开始,我们可以在NS_DESIGNATED_INITIALIZER&帮助下完全控制我们的初始化器. Objective-C中的NS_UNAVAILABLE组合.与Swift相比,它需要更多的工作,但这是值得的.特别是如果你想让你的课程与Swift更好地兼容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- FLEX的多线程实现以及对串口操控的一点小思路
- Ruby:魔术评论“frozen_string_literal:true”vs“immuta
- c – 为什么我的TB_INSERTBUTTON消息导致comctl32抛出?
- Oracle官方JDBC jar包下载
- 格式化输出 simpleDateFormat 、正则表达式 pattern 和异常
- ruby rm_rf异步?
- ruby-on-rails-3 – accepts_nested_attributes_for导致SQL
- c – void Classname :: operator()(){…}做什么?
- 如何使create-react-app创建的react项目支持sass
- oracle_18c新建用户用normal登陆失败