在Objective-C代码中定义如下时,如何从Swift指定Item协议?
// Objective-C
@protocol Item <NSObject>
@end
@interface Item : NSObject<Item>
@end
@implementation Item
@end
// Swift
var item = Item() // item interface, but I'd like to define as Item protocol.
我应该定义为唯一名称吗?
您无法实例化协议类型,因此Item()
将始终引用@interface Item
。您应该在声明中明确指定您的意思是协议:
var item: protocol<Item>
顺便说一句,您在Objective-C中所做的事情无法在Swift中完成–它要求在同一作用域中的所有声明都必须唯一地命名。按照Apple的约定,您的等效项将如下所示:
@objc(Item) protocol ItemType {
}
class Item: ItemType {
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句