我正在尝试对Swift中的类中的数组使用延迟初始化。 当我在类中使用@objc声明时,为了在objective-c中使用它,我得到了编译错误。当我只使用没有@objc的类时,我可以毫无问题地编译它。
我为此收到错误:
@objc class MyClass {
@lazy var arr : String[] = String[]()
}
对于以下代码,我没有错误:
class MyClass {
@lazy var arr : String[] = String[]()
}
谢谢你的帮助!
答案 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属性。
因此,这个类不包括在内(不可访问),所以它没有给出错误。