gpt4 book ai didi

ios - 如何让所有的子类都必须遵守协议(protocol)?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:11:18 24 4
gpt4 key购买 nike

我有一个基类 SLBaseViewController,它是 UIViewController 的子类,并希望它的所有子类都符合协议(protocol):

@protocol SLLocalizable <NSObject>

- (void)localize;

@end

问题是我不需要 SLBaseViewController 来符合协议(protocol)本身,但我需要编译器在子类不符合时警告我。

我尝试过的:

  1. 像这样定义基类:

    @interface SLBaseViewController : UIViewController <SLLocalizable>

    在这种情况下,编译器告诉我 SLBaseViewController 没有实现 localize 方法。

  2. 使 localize 可选。

    编译器保持沉默。但这不是我需要的。

  3. 使每个子类都符合协议(protocol)本身。这似乎是一个正确的方法,但我有 50 多个子类,而且这是很长的路要走。

有没有一种简单的方法可以实现我的目标?

最佳答案

除了在子类本身中指定它之外,您不能指定子类实现任何协议(protocol)。

搜索子类来编辑它们(而不是试图记住每个)。反射搜索将能够找到没有给出协议(protocol)名称的子类。

作为安全检查,让父类(super class)在被调用时抛出异常,这样您就知道什么时候遗漏了什么。显然,这仅在测试期间有效。

如果这让您变得偏执,您可以尝试编写一个单元测试 gets all the subclasses并对它们调用 localize

关于ios - 如何让所有的子类都必须遵守协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18556129/

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