【发布时间】:2016-10-04 14:52:08
【问题描述】:
我有一个构成许多类基础的协议——在下面的示例中,StaticFile 和 RemoteFile。我有一个指向协议的变量的引用
protocol ContainerDelegate {}
protocol FileProtocol {
var delegate: ContainerDelegate? { get set }
}
class StaticFile: NSObject, FileProtocol {
var delegate: ContainerDelegate?
}
class RemoteFile: NSObject, FileProtocol {
var delegate: ContainerDelegate?
}
class Container: NSObject, ContainerDelegate {
var item: FileProtocol
override init() {}
func something() {
if item.delegate !== self { // This fails
}
}
}
我什至不关心类型,我只想看看委托是否不是当前对象(通过引用)。使故障线正常工作的最佳方法是什么?
【问题讨论】:
-
你应该使用
!=。 -
能否提供一个完整的运行代码示例?
-
不能使用
!=,我的类是有状态的。完成——上面的代码将显示一个错误。 -
如果您想通过引用进行比较,那么@luk2302 的答案就是要走的路。