Swift
-
참조 비교 연산자 ===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의 새로운 인스턴스가 저장됩니다. 그리고 in..
-
클로저에서 [weak self]를 사용하는 이유Swift 2021. 8. 21. 15:10
목차 1. 클로저에서 self를 weak로 캡쳐하는 이유 2. 강한 참조 순환이 일어나는 경우 3. 약한 참조를 통해 강한 참조 순환을 피하는 경우 4. 결론 클로저에서 self를 weak로 캡쳐하는 이유 강한 참조 순환(Strong Reference Cycle)을 피하기 위함입니다. 클래스 속 클로저 안에 해당 클래스의 인스턴스(self)를 사용하기 위해서는 약한 참조를 해야합니다. self를 약한 참조로 캡쳐하지 않으면 강한 참조 순환(Strong Reference Cycle)이 일어나기 때문입니다. 예시를 통해 자세히 설명하겠습니다. 강한 참조 순환이 일어나는 경우 class someClass { var someProperty: Int? var someClosure: (() -> Int?)? fun..