gpt4 book ai didi

iphone - 防止其他程序员调用 -init 的最佳方法

转载 作者:IT老高 更新时间:2023-10-28 11:44:31 26 4
gpt4 key购买 nike

在设计类层次结构时,有时子类添加了一个新的 initWithSomeNewParam 方法,最好禁用对从父类(super class)继承的旧 init 方法的调用.

首先,我已经阅读了 here 的问题。 ,其中建议的替代方案是覆盖 init 以在运行时引发异常,或者覆盖并设置属性的默认值。就我而言,我不想提供默认值,我想明确指出不应该调用旧方法,而应该使用带参数的新方法。

所以运行时异常是可以的,但除非调试代码,否则团队中的其他程序员无法注意到不再使用旧方法。

如果我是正确的,没有办法将方法标记为“私有(private)”。那么,除了添加评论之外,有没有办法做到这一点?

提前致谢。

最佳答案

你可以在你的头文件中明确标记你的 init 为不可用:

- (id) init __unavailable;

或:

- (id) init __attribute__((unavailable));

使用后面的语法,你甚至可以给出一个理由:

- (id) init __attribute__((unavailable("Must use initWithFoo: instead.")));

如果有人试图调用它,编译器就会发出错误(而不是警告)。

关于iphone - 防止其他程序员调用 -init 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9634256/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com