Lazy init在Swift中的@objc类中的variables

我想在Swift中的类中使用数组的懒惰初始化。 当我为类使用@objc声明时,为了在objective-c中使用它,我得到了一个编译错误。 当我只使用没有@objc的类,我可以编译它没有任何问题。

我得到这个错误:

@objc class MyClass { @lazy var arr : String[] = String[]() } 

产生错误

对于下面的代码,我没有得到任何错误:

 class MyClass { @lazy var arr : String[] = String[]() } 

谢谢你的帮助!

在第一种情况下,我认为它是桥代码生成器开发者论坛中的一个错误。

如果任何不是Objective-C兼容的编译器将不会生成与Objective-C等价的(它不会给出Error),例如,如果您有一个generics或元组在Objective-C编译器中不受支持将不会生成客观C等价物,这也不会给错误。

在第二种情况下,您不包括@objc ,从苹果文档:

Swift类或协议必须使用@objc属性标记为可在Objective-C中访问和使用。 这个属性告诉编译器,这段Swift代码可以从Objective-C中访问。如果你的Swift类是Objective-C类的后代,编译器会自动为你添加@objc属性。

因此这个类不包括(不可访问),所以它不给错误。