我可以在Swift中扩展最后一堂课吗?

met*_*tpb 9 class-extensions swift final-class

我正在使用第三方库来创建一个使用Swift创建的新应用程序.类/库的作者使用final关键字使其最终成为可能,以优化和防止覆盖其属性和方法.

例:

final public class ExampleClass {
   // Properties and Methods here
}
Run Code Online (Sandbox Code Playgroud)

是否有可能扩展类并为其添加一些新属性和方法而不覆盖默认值?

像这样:

extension ExampleClass {
    // New Properties and Methods inside
}
Run Code Online (Sandbox Code Playgroud)

LoV*_*oVo 7

扩展可能不包含存储的属性,但您可以在其中添加方法.


Tho*_*ing 5

扩展(如Objective-C类别)不允许存储属性.
方法和计算属性很好.

Objective-C中常见的(但IMO hacky)解决方法是使用关联对象来获取类别中的存储.如果你这也适用于Swift import ObjectiveC.
这个答案包含一些细节.