일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 리펙토링
- map
- clean architecture
- RxCocoa
- swift documentation
- 애니메이션
- Human interface guide
- uiscrollview
- MVVM
- rxswift
- collectionview
- tableView
- swiftUI
- ribs
- Xcode
- 스위프트
- HIG
- ios
- Refactoring
- UITextView
- combine
- UICollectionView
- 리팩토링
- 리펙터링
- SWIFT
- Observable
- uitableview
- 클린 코드
- Protocol
- Clean Code
- Today
- Total
목록retain cycle (5)
김종권의 iOS 앱 개발 알아가기
1. weak self 동작 이해하기 - retain cycle이 발생하는 경우 2. weak self 동작 이해하기 - 외부에 weak self 선언하고 클로저에서 사용하는 경우 (#캡처리스트 [weak self] 리펙토링) weak self를 클로저 외부에서 사용 시 retain cycle이 발생할까? 예제를 위해 retain cycle이 발생하는 코드 준비 class A { private var closureEscaper: ((String) -> ())? func escape(closure: @escaping (String) -> ()) { print("escaping!") closureEscaper = closure } } class B { var name = "Jake" let a = A() /..
1. weak self 동작 이해하기 - retain cycle이 발생하는 경우 (#클로저, #escaping 클로저) 2. weak self 동작 이해하기 - 외부에 weak self 선언하고 클로저에서 사용하는 경우 (#캡처리스트 [weak self] 리펙토링) weak self 개념 escaping closure에서 순환 참조를 발생시키는 케이스에서 캡쳐 리스트로 weak 참조를 사용 순환참조란? 생성자가 할당 해제된 후에도 인스턴스가 할당 해제되지 않도록 하는 reference 상 순환을 이루는 상태 둘 이상의 인스턴스가 서로에 대한 strong 참조를 보유할 때 발생 구체적인 내용은 이전 포스팅 글 참고 사전지식) 클로저란? Closure(폐쇄): 클로저는 코드에서 전달 및 사용할 수 있는 2가..
Lazy var 클로저 사용시 주의사항 lazy var 클로저 사용 시 retain cycle이 발생하는지? 아래 1)번과 2)번 구분 (아래에서 계속) 1) private let text = "label" private lazy var label: () -> UILabel = { let label = UILabel() label.text = self.text // self를 안쓰면 컴파일에러 발생 label.translatesAutoresizingMaskIntoConstraints = false return label } 2) private let text = "label" private lazy var label: UILabel = { let label = UILabel() label.text = t..
1. 클로저를 사용할 때 주의할 점 - Memory Leaks, Retain Cycle, nested closure 첫 번째2. 클로저를 사용할 때 주의할 점 - nested closure 두 번째3. 클로저를 사용할 때 주의할 점 - nested closure 세 번째Memory Leak이란?메모리에 할당 되었지만, 절대 release되지 않고 reference되지 않는 것이것을 참조할 수 없기 때문에 절대 release할 수 없는 상태Retain Cycle이란?생성자가 할당 해제된 후에도 인스턴스가 할당 해제되지 않도록 하는 reference 상 순환을 이루는 상태둘 이상의 인스턴스가 서로에 대한 strong 참조를 보유할 때 발생retain cycle이 발생하지 않는 케이스UIView.animate..
ARC의 기본 개념 참고 참조 카운트 확인 방법 CGFGetRetainCount(object)를 사용하여 확인 // ex) print(CFGetRetainCount(obejct1)) // 2 print(CFGetRetainCount(obejct1.property1)) // 2 print(CFGetRetainCount(obejct2)) // 2 obejct1.property1 = object2 print(CFGetRetainCount(obejct1)) // 2 print(CFGetRetainCount(obejct1.property1)) // 3 print(CFGetRetainCount(obejct2)) // 3 참조 카운트가 증가하는 구체적인 상황 참초 가운트 테스트를 위한 클래스 정의 protocol A..