如何在Objective-C中标记超类“无效”的指定初始值设定项?

时间:2015-06-19 15:36:25

标签: objective-c designated-initializer

来自Adapting Modern Objective-C document

  

如果一个类提供了一个或多个指定的初始值设定项,它必须实现其超类的所有指定初始值设定项。

这意味着如果我有NSObject的子类有自己的指定初始值设定项,请说

- (instancetype)initWithImage:(UIImage*)image NS_DESIGNATED_INITALIZER;

然后我还需要提供NSObjects -init的实现。我应该怎么做才能将-init初始化程序标记为“无效”,即没有人应该调用它而是使用-initWithImage:代替?这里最好的做法是什么?

修改

我尝试了here描述的技术。

但是,当我在接口中将超类-init方法标记为unavailable时,编译器仍然告诉我需要覆盖超类的初始值设定项。

当我尝试其他技术时,即提出异常或在-doesNotRecognizeSelector:内调用-init时,我收到一条错误消息,指出我需要调用我指定的初始化程序之一。

0 个答案:

没有答案