ARC 4

[Swift] weak self, 어떻게 사용해야할까? (2/2)

[Swift] weak self, 어떻게 사용해야할까? (2/2) [Swift] weak self, 어떻게 사용해야할까? [Swift] weak self, 어떻게 사용해야할까? 클로저를 매개변수로 받아 메소드를 작성하는 경우, 혹은 URLSession 이나 DispatchQueue 를 이용할 때, 클로저 내부에서 클로저 외부의 프로퍼티나 메소드를 사용 trumanfromkorea.tistory.com 앞선 글에 이어서 마저 작성해보도록 하겠습니다. GCD GCD 호출은 나중에 실행하기 위해 어딘가에 저장하지 않는 한 순환참조가 발생할 위험이 없습니다. 다음 코드와 같이 작업이 바로바로 수행되는 경우에는 [weak self] 를 사용하지 않더라도 메모리 누수가 발생하지 않을 것입니다. func nonLea..

iOS 개발/Swift 2022.10.23

[Swift] weak self, 어떻게 사용해야할까? (1/2)

[Swift] weak self, 어떻게 사용해야할까? (1/2) 클로저를 매개변수로 받아 메소드를 작성하는 경우, 혹은 URLSession 이나 DispatchQueue 를 이용할 때, 클로저 내부에서 클로저 외부의 프로퍼티나 메소드를 사용하는 경우 self 를 사용해야 한다는 경고창을 한 번쯤은 보신적이 있으실겁니다. 저는 위와 같은 상황을 겪을때마다 별 생각 없이 self 를 앞에 붙여주었습니다. 시간이 지나 self 는 해당 클로저를 품고있는 객체를 강하게 참조한다는 것을 알게 되었고, [weak self] 를 이용하다는 것이 안전하다고 하기에 그렇게 사용하고 있었습니다. 하지만 이런 경우 self 가 약하게 참조되기 때문에 옵셔널 체이닝을 해주거나, guard let 구문을 이용하여 바인딩 해줘..

iOS 개발/Swift 2022.10.23

[Swift] ARC (2/2)

[Swift] ARC (2/2) [Swift] ARC (1/2) 보러가기 [Swift] ARC (1/2) [Swift] ARC (Automatic Reference Counting) 앱의 메모리 사용량을 추적하고 관리 어떠한 클래스 인스턴스가 더 이상 필요하지 않을 때 인스턴스에 할당된 메모리 자동해제 Reference Type 인 클래스 인스턴스 trumanfromkorea.tistory.com 클로저에 대한 강한 참조 사이클 (순환 참조) 순환 참조는 클래스 인스턴스의 프로퍼티에 클로저를 할당하고 해당 클로저의 바디에 인스턴스를 캡처하는 경우에도 발생할 수 있습니다. 클로저의 바디에서 self.someProperty 와 같이 인스턴스의 프로퍼티에 접근하거나 self.someMethod() 와 같이 인..

iOS 개발/Swift 2022.04.29

[Swift] ARC (1/2)

[Swift] ARC (Automatic Reference Counting) 앱의 메모리 사용량을 추적하고 관리 어떠한 클래스 인스턴스가 더 이상 필요하지 않을 때 인스턴스에 할당된 메모리 자동해제 Reference Type 인 클래스 인스턴스에만 적용. Value Type 에는 해당되지 않음 동작 방식 클래스가 새 인스턴스를 생성할때마다 ARC 는 메모리 할당 인스턴스의 메모리가 해제되면 더 이상 해당 인스턴스에 접근 불가능 그래서 ARC 는 인스턴스가 언제까지 필요한지 알기 위해 인스턴스를 참조하는 프로퍼티, 상수, 변수의 수를 추적함 클래스 인스턴스를 할당하기 위해 변수를 3개 선언하고, 나중에 nil 을 할당하여 해제해주기 위해 Optional 로 선언합니다. reference1 변수에 클래스 인..

iOS 개발/Swift 2022.04.29