-
참조 비교 연산자 ===Swift 2021. 8. 28. 12:01
스위프트에서 연산자 === 는 참조값을 비교해주는 연산자입니다.
클래스 인스턴스인 A와 B에 대해 A === B 를 수행할 경우, A와 B가 같은 메모리를 참조한다면 true가 반환됩니다.
예시를 살펴보겠습니다.
class someClass { var someProperty: Int? } var instance1 = someClass() var instance2 = someClass() var instance3 = instance1 print(instance1 === instance2) print(instance1 === instance3)
실행 결과:
instance1 에 someClass의 새로운 인스턴스가 저장되고 instance2 에도 someClass의 새로운 인스턴스가 저장됩니다.
그리고 instance3은 instance1를 참조하게 됩니다. 이를 통해 instance1과 instance3은 같은 객체를 갖게 됩니다. 같은 메모리 주소를 가리키게 되는 것입니다. 결국 참조 비교연산자 === 를 통해 instance1과 instance2는 다른 객체를 갖고 instance1과 instance3은 같은 객체를 갖는 것을 알 수 있습니다.
반대로 !== 를 사용한다면 비교되는 두 인스턴스가 다를 경우에 true가 반환됩니다. 참고로 === 연산자는 구조체에는 쓸 수가 없습니다. 구조체는 같은 참조값을 가질 수 없기 때문입니다. 즉, 값 타입이므로 참조 비교 연산자를 쓴다면 오류가 납니다.
'Swift' 카테고리의 다른 글
클로저에서 [weak self]를 사용하는 이유 (0) 2021.08.21