为什么会提到NS_DESIGNATED_INITIALIZER
最近在清理项目警告,遇到了“Method override for the designated initializer”的警告,全称为:
- Method override for the designated initializer of the superclass '-init' not found 或者
- Method override for the designated initializer of the superclass '-initWithNibName:bundle:' not found。
经排查是因为头文件中出现NS_DESIGNATED_INITIALIZER 声明的初始化方法,如下:
如果用了NS_DESIGNATED_INITIALIZER,那么警告中出现init还是initWithNibName或是其它,取决于你的继承的父类类型:
UIViewController
- Method override for the designated initializer of the superclass '-initWithNibName:bundle:' not found
- Method override for the designated initializer of the superclass '-initWithCoder:' not found
UIView
- Method override for the designated initializer of the superclass '-initWithFrame:' not found
- Method override for the designated initializer of the superclass '-initWithCoder:' not found
NSObject
-
Method override for the designated initializer of the superclass '-init' not found

本文探讨了在Objective-C中遇到的"Method override for the designated initializer"警告,解释了NS_DESIGNATED_INITIALIZER的作用,即指定类的构造器。文章强调了正确使用NS_DESIGNATED_INITIALIZER的重要性,包括为何使用它、如何避免警告,以及如何通过NS_UNAVAILABLE宏来限制初始化方式,以确保代码的正确性和一致性。同时,建议避免使用new关键字创建对象,因为它可能不会触发编译器的警告。
最低0.47元/天 解锁文章
2538

被折叠的 条评论
为什么被折叠?



