在Swift中@objc类中的变量的惰性初始化

时间:2014-06-30 05:51:50

标签: ios objective-c swift

我正在尝试对Swift中的类中的数组使用延迟初始化。 当我在类中使用@objc声明时,为了在objective-c中使用它,我得到了编译错误。当我只使用没有@objc的类时,我可以毫无问题地编译它。

我为此收到错误:

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

Error generated

对于以下代码,我没有错误:

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

谢谢你的帮助!

1 个答案:

答案 0 :(得分:3)

在第一种情况下,我认为它是桥接代码生成器Developer forum中的一个错误。

  

如果任何不符合Objective-C的编译器都不会   生成它的Objective-C等价物(它不会给出错误),For   例如,如果你有一个不受支持的泛型或元组   objective-C编译器不会生成Objective-C等价物   为此,它也不会给出错误。

在第二种情况下,您不包括 @objc ,来自apple doc:

  

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

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