在Swift中进行Objective-C类期末考试

在Swift中进行Objective-C类期末考试,objective-c,swift,Objective C,Swift,通常的做法是将Swift类设为最终类,除非继承是绝对必要的,以鼓励使用组合。当导入到Objective-C时,Swift通过设置Objective-C属性objc\u subclassing\u restricted来强制执行此操作,而不考虑final关键字。但是,具有这些属性的接口并不像我所期望的那样作为final类导入到Swift中 如何创建从Objective-C导入的Swift类final?现在看来这是不可能的。Objective-C不支持final类,所以Swift认为每个Obj-C类

通常的做法是将Swift类设为最终类,除非继承是绝对必要的,以鼓励使用组合。当导入到Objective-C时,Swift通过设置Objective-C属性
objc\u subclassing\u restricted
来强制执行此操作,而不考虑
final
关键字。但是,具有这些属性的接口并不像我所期望的那样作为
final
类导入到Swift中


如何创建从Objective-C导入的Swift类
final

现在看来这是不可能的。Objective-C不支持
final
类,所以Swift认为每个Obj-C类都不是final。好吧,现在试图用
Obj\u subclassing\u restricted
对某个对象进行子类化是一个编译器错误,所以它在编译时确实支持它们(当然,在运行时你仍然可以做任何事情,这是Objective-C)。不,您没有区分语言功能和编译器功能
obj\u子类化\u restricted
是编译器将Swift最终性转移到obj-C的一种方式。确实,您可以滥用它来防止在obj-C中进行子类化,但您不能期望它被转移到Swift。这不是一种语言特征。另一个Obj-C编译器将忽略该属性。