在Objective-C中,我可以执行以下操作:
SomeClass<SomeProtocol> *foo = nil;
这告诉编译器foo
isa SomeClass
,并且符合协议SomeProtocol
。
我如何在Swift中做同样的事情?
当我尝试执行以下操作时:
@objc
protocol SomeProtocol {}
class SomeClass: NSObject {}
class ChildClass: SomeClass, SomeProtocol {}
class FooBar {
init() {
var foo: SomeClass<SomeProtocol>
}
}
......它给出了错误:
error: cannot specialize non-generic type 'SomeClass'
var foo: SomeClass<SomeProtocol>
^
这是因为天使括号(<>
)是为泛型而不是协议保留的。