将@objc标志添加到方法时出现Xcode编译器错误

时间:2016-03-07 14:29:36

标签: ios objective-c xcode swift

Xcode提供以下编译器错误。

enter image description here

我认为它抱怨使用NSLayoutAttribute枚举。如果它抱怨这个,为什么它不抱怨NSLayoutRelation enum。如何以与Objective-C兼容的方式编写此方法。

2 个答案:

答案 0 :(得分:1)

我认为这是因为Objective C对象不能包含非NSObjects的数组。

为未来的搜索者编辑: 使用AnyObject擦除类型会使警告消失,但是您需要注意投射。

答案 1 :(得分:0)

您收到此错误的原因(即使在继承自NSObject的类中)是因为某些Swift类型无法在Objective-C中表示,例如array of enums

[[NSLayoutAttribute]]无效,但[[Int]]将无效,因为Array<SomeEnumType>无法桥接,Int数组会隐式桥接到NSArray { {1}}对象通过基金会。

Yoav Schwartz的回答是错误的,因为Objective-C对象可以拥有不是NSNumber s的数组。查看C数组:NSObject在Objective-C中有效。但是,NSUInteger someNums[5] = {1, 2, 3, 4, 5};不能保存值类型并且必须保存对象。