为什么protocols
属性在swift中被翻译为[AnyObject],而不是[P]
@protocol P;
@class C;
@interface TestGenerics: NSObject
@property NSArray<C*>* classes;
@property NSArray<P>* protocols;
@end
在Swift中它看起来像这样:
public class TestGenerics : NSObject {
public var classes: [C]
public var protocols: [AnyObject]
}
更新:找到解决方案
@property NSArray<NSObject<P>*>* protocols;
或者像建议的newacct
@property NSArray<id<P>>* protocols;
被翻译为:
public var protocols: [P]
答案 0 :(得分:8)
P
不是Objective-C中的类型。对于符合协议id<P>
的任何内容,P
是Objective-C类型。 (NSObject<P> *
是NSObject
的实例的任何类型,符合协议P
,这种情况略有不同。)
所以写它的最好方法是:
@property NSArray<id<P>> *protocols;