Swift的类,方法和属性限制

时间:2018-11-11 19:22:03

标签: swift restriction

我正在通过代码限制在可读性/可用性和性能改进之间寻求可行的折衷方案。

根据this问题和链接的Apple document,看来尽可能频繁地使用代码限制非常重要。

另一方面,我从未见过实现所有代码限制的示例,并且我绝不会尝试这样的代码:

    final internal class TestClass {
        final private var result: String = "Result"
        ...

        final internal func TestMethod(result: String) -> String {
            ...
        }
    }

那么,是否存在一个普遍接受且“可行”的折衷方案?

编辑

换句话说,如果finalprivate之类的代码限制所产生的性能提升如所附文章中所述,那么为什么我们很少看到它呢?为何它不是默认行为?

1 个答案:

答案 0 :(得分:1)

链接的答案错误陈述了链接的博客文章。如果您正在使用“整体模块优化”(应该始终在“发布”模式下使用),出于性能原因,通常不需要主动添加finalprivate。编译器将确定何时可以插入它们。您应该使用finalprivate向其他程序员(和您自己)而不是优化程序表达您的意图。

  

但是,如果启用了“整体模块优化”,则将同时编译所有模块。这样一来,编译器就可以对整个模块进行推断,并在没有可见替代的情况下推断内部的final声明。