Я пытаюсь выяснить, когда мне следует использовать === для сравнения UIViews. Я понял, что использую ==, не задумываясь о том, как UIView является ссылочным типом. Но это никогда не вызывало у меня никаких проблем, поэтому кажется, что === никогда не требуется для UIViews?
Мое понимание сравнения значений == и сравнения идентификаторов === на основе этого предыдущего вопроса означает, что для классов необходимо использовать ===, чтобы узнать, есть ли у вас один и тот же экземпляр, и ==, чтобы узнать, имеют ли они одинаковое значение. Однако для класса UIView ==, похоже, работает точно так же, как оператор ===.
let v1 = UIView()
let v2 = UIView()
XCTAssertTrue(v1 === v1)
XCTAssertTrue(v1 == v1)
XCTAssertTrue(v1.isEqual(v1))
XCTAssertFalse(v1 === v2)
XCTAssertTrue(v1 == v2)
XCTAssertTrue(v1.isEqual(v2))
Исходя из этого понимания, я ожидаю, что все это пройдет. Чтобы узнать, являются ли v1 и v2 разными экземплярами, я должен использовать ===, и == должно быть истиной, поскольку они имеют одинаковые значения свойств. Однако это не то, что произошло.
== и === оба были ложными. Разве они не должны работать по-другому? Эти представления имеют одинаковые значения свойств.
Использует ли UIView === для реализации Equatable? Нет ли смысла использовать === на UIViews?