Mis*_*ith 39 iphone cocoa-touch objective-c init
在设计类层次结构时,有时子类添加了一个新initWithSomeNewParam方法,并且希望禁用对init从超类继承的旧方法的调用.
首先,我在这里阅读了这个问题,其中提出的替代方法是覆盖init在运行时抛出异常,或覆盖并设置属性的默认值.在我的情况下,我不想提供默认值,我想清楚地表明不应该调用旧方法,而应该使用带参数的新方法.
因此运行时异常很好,但除非代码被调试,否则团队中的其他程序员无法注意到旧方法不再用于使用.
如果我是正确的,那么就没有办法将方法标记为"私有".所以,除了添加评论之外,有没有办法做到这一点?
提前致谢.
Dar*_*ust 106
您可以init在头文件中明确标记为不可用:
- (id) init __unavailable;
Run Code Online (Sandbox Code Playgroud)
要么:
- (id) init __attribute__((unavailable));
Run Code Online (Sandbox Code Playgroud)
使用后面的语法,您甚至可以给出一个理由:
- (id) init __attribute__((unavailable("Must use initWithFoo: instead.")));
Run Code Online (Sandbox Code Playgroud)
如果有人试图调用它,编译器会发出错误(而不是警告).
| 归档时间: |
|
| 查看次数: |
5781 次 |
| 最近记录: |