5

来自Adapting Modern Objective-C 文档

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

这意味着如果我有一个子类NSObject有自己的指定初始化程序,比如说

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

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

编辑

我尝试了这里描述的技术。

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

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

4

0 回答 0