我正在清理应用程序中的警告,我收到了两次警告
Method override for the designated initializer of the superclass '-init' not found
Run Code Online (Sandbox Code Playgroud)
对于这行代码
@implementation AFNetworkReachabilityManager
Run Code Online (Sandbox Code Playgroud)
这条线
@implementation AFURLConnectionOperation
Run Code Online (Sandbox Code Playgroud)
我对objective-c相当新,并且用Google搜索了这个警告,只是不明白解决方案
我的问题是如何摆脱这些警告?
Boi*_*ime 23
来自Apple论坛
指定初始化程序的规则很复杂,我会将您反馈给一般案例的文档.奇怪的是,我发现最好的解释是Swift编程语言的"初始化"部分,因为相同的概念适用于Swift和Objective-C.在您的特定情况下,您应该覆盖-init并使其在运行时失败.您还应该使用NS_UNAVAILABLE在标头中标记它,这将允许编译器在典型情况下捕获它.以上情况适用,因为您的类不可能在没有模型的情况下运行,因此您无法以任何有用的方式合理地实现-init.如果可以,你应该.例如,如果您要创建自己的字符串对象,
在您的.h文件中:
@interface MyClass : NSObject
- (instancetype)init NS_UNAVAILABLE;
@end
Run Code Online (Sandbox Code Playgroud)
在.m文件中:
@interface MyClass ()
- (instancetype)init NS_DESIGNATED_INITIALIZER;
@end
@implementation MyClass
- (instancetype)init { @throw nil; }
@end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3534 次 |
| 最近记录: |