일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- uiscrollview
- 리펙토링
- 스위프트
- HIG
- uitableview
- Protocol
- 클린 코드
- tableView
- Clean Code
- rxswift
- Observable
- SWIFT
- swift documentation
- swiftUI
- collectionview
- Refactoring
- MVVM
- clean architecture
- ribs
- map
- ios
- 리팩토링
- 애니메이션
- UICollectionView
- UITextView
- Human interface guide
- combine
- RxCocoa
- Xcode
- 리펙터링
- Today
- Total
목록Memory Safety (2)
김종권의 iOS 앱 개발 알아가기
Escaping closure에서의 self 캡쳐 value type인 struct의 mutating 키워드가 붙은 메서드에서, 클로저(escaping closure)내부에 self를 참조하는 경우에 발생 오류가 발생하는 이유 swift에서는 memory safety을 지키기 위해서 컴파일러 타임에 이런 케이스를 사전에 방어해주기 위해 이런 컴파일 에러를 표출 memory safety 개념은 이전 포스팅 글 참고 ex) memory safety하지 않은, memory access conflict 발생 코드 value타입에서 set과 get이 동시에 일어나는 경우 다시 돌아와서, "Escaping closure captures mutating 'self' parameter" 에러가 나는 이유? value ..
dataSource 관리 MVVM 구조에서 보통 dataSource를 사용할 때 아무런 큐 없이 구현하지만, 데이터 처리 최적화를 위해 background 시키고 싶은 경우 중간중간 DispatchQueue.global()를 사용하거나 커스텀 큐를 사용하는 경우가 존재 개발자가 실수로 DispatchQueue.global()를 사용하게 되면, 이 큐는 serial이 아닌 concurrent이므로 value type인 dataSource 배열을 수정과 동시에 읽기를 하다가 크래시가 발생하는 경우가 존재 크래시 - 이전 Memory Access Conflict 글 참고 이럴때는 커스텀 큐를 선언하여 관리하는것이 가장 좋은데, 먼저 queue의 종류를 이해가 필요 DispatchQueue의 종류 3가지 * 이..