Это потому, что equalTo
выглядит так:
public func equalTo(_ other: ConstraintRelatableTarget, _ file: String = #file, _ line: UInt = #line) -> ConstraintMakerEditable {
return self.relatedTo(other, relation: .equal, file: file, line: line)
}
И ConstraintRelatableTarget
- это протокол, который приводит к различным типам, таким как Int, Float и т. Д. У вас также есть ссылка на ConstraintItem
, в данном случае это тот вид, на который вы ссылаетесь, и он выглядит так:
internal weak var target: AnyObject?
internal let attributes: ConstraintAttributes
internal init(target: AnyObject?, attributes: ConstraintAttributes) {
self.target = target
self.attributes = attributes
}
internal var layoutConstraintItem: LayoutConstraintItem? {
return self.target as? LayoutConstraintItem
}
Как оказалось, и Any?
, и AnyObject?
(я не думаю, что это необязательно), для достижения себя не нужно. Следовательно, все, что вы вставляете в функцию equalTo
, snapKit
воспринимается как AnyObject?
, поэтому ссылка на self
не требуется.