У меня есть struct
установить, что принимает ссылку в качестве единственного параметра инициализации:Ссылка `self` в объявлении члена Swift экземпляра
internal struct NodeState: Equatable {
weak var node: Node! = nil
// ...
init(node: Node) {
self.node = node
}
}
Я хочу, чтобы создать экземпляр NodeState
в качестве члена Node
класса, передавая self
, чтобы установить, что слабая ссылка:
public class Node: NSObject {
internal var state = NodeState(node: self)
// ...
}
... но я получаю эту странную ошибку компиляции:
Cannot convert value of type 'NSObject ->() -> Node' to expected argument type 'Node'
Мне не позволено ссылаться на self
в декларации участника в Свифт?
Возможный дубликат [Инициализация Swift свойства, которые требуют «я» в качестве аргумента] (http://stackoverflow.com/questions/25149248/initializing-swift-properties-that-require-self -as-an-argument) – jtbandes
Просто отметим, что странная ошибка компиляции связана с [методом 'self' в NSObject] (https://developer.apple.com/reference/objectivec/nsobjectprotocol/1418954-self). В классе, отличном от ObjC, ошибка будет просто «Использовать разрешенный идентификатор« self ». – kennytm