일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- HIG
- UICollectionView
- combine
- uitableview
- ribs
- swiftUI
- Protocol
- Refactoring
- Observable
- tableView
- Human interface guide
- 리펙토링
- SWIFT
- ios
- rxswift
- map
- Clean Code
- 스위프트
- collectionview
- swift documentation
- RxCocoa
- 애니메이션
- Xcode
- 리팩토링
- clean architecture
- UITextView
- 클린 코드
- 리펙터링
- uiscrollview
- MVVM
- Today
- Total
목록weak self (5)
김종권의 iOS 앱 개발 알아가기
기본지식 1) capture list 개념 closure = { [weak self] in // Void)? } 그래서 보통 위와 같은 전역변수가 아닌, 함수 or 메서드에 @escaping 키워드를 붙이는 것 func someFunc(_ closure: @escaping (Void) -> Void) { } 기본지식 3) [weak self]를 안써서 memory leak을 일으키는 코드 SomeClass의 setupClosure() 메서드를 보면 closure를 assign할 때 self를 집어넣음 -> retain cycle 발생 1) SomeClass 인스턴스가 closure 프로퍼티 참조 2) closure 프로퍼티가 SomeClass 인스턴스 참조 (이 부분이 클로저 안에서 self를 참조해서 ..
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가..
사전 지식1) capture와 escaping의 개념 공통점: 둘 다 closure에서 사용되는 개념 차이점 capture: 클로저 내부에서 밖에 있는 scope의 instance를 참조하는 것 escaping: 클로저 외부에서 해당 클로저 자체를 참조하고 있는 것 사전 지식2) Escaping closure의 의미 `저장`되고, `지연`시킬 수 있는 기능 블록을 가지는 클로저가 바깥의 변수에 의해서 저장되는 경우 "Escaping closure"라고 정의 인자로 전달받은 함수 중 함수의 리턴 이후에 실행될 수 있는 함수 함수가 리턴되면 해당 scope은 사라지지만, closure는 함수의 scope을 escaping하여 함수 종료 후에 실행된다는 의미 // 함수의 return보다 completion이 ..
Closure 개념 Closure(폐쇄): 클로저는 코드에서 전달 및 사용할 수 있는 2가지의 자체 기능을 가진 블록 정의된 컨텍스트에서 모든 상수 및 변수에 대한 참조를 캡쳐하고 저장 가능 캡쳐: 자신의 블록 외부에 있는 값을 참조하는 것 자세한 내용: Closure 개념 정리 Closure의 생명주기 closure(escaping, non-escaping)은 expensive한 serial sork를 처리하므로 작업이 끝날때까지 scrop가 딜레이 closure(escaping, non-escaping)은 thread blocking 매커니즘(DispatchSemaphore) DispatchSemaphore: 카운팅 세마포어를 사용하여 여러 실행 컨텍스트에서 리소스에 대한 액세스 제어 escaping..