일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- swiftUI
- 애니메이션
- collectionview
- SWIFT
- rxswift
- Xcode
- swift documentation
- UICollectionView
- 클린 코드
- Observable
- Human interface guide
- UITextView
- Refactoring
- map
- uitableview
- clean architecture
- 리펙토링
- combine
- HIG
- Clean Code
- Protocol
- ribs
- 리펙터링
- 스위프트
- MVVM
- RxCocoa
- uiscrollview
- tableView
- 리팩토링
- ios
- Today
- Total
목록스레드 (4)
김종권의 iOS 앱 개발 알아가기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bXkcW8/btsp19ZQp7i/Q5oow0xi1D8k0MCzfqkPm1/img.png)
사전지식) RxSwift의 GCD 종류 1) main (serial) main thread에서 처리되는 serial queue (모든 UI관련 작업은 해당 큐에서 main queue에서 실행) 2) global (concurrent) 전체 시스템에서 공유되는 concurrent queue이고, concurrent이기 queue끼리의 우선순위를 위해서 queue를 사용할 때 QoS 설정 필요 userInteractive: 유저가 누르면 즉각 반응 (main queue) userInitiated: 유저가 실행시킨 작업들을 즉각적이지는 않지만, async하도록 처리 default utility: I/O, n/w API 호출 background: 유저가 인지하지 못할 정도의 뒷단에서 수행하는 작업 3) 커스텀 ..
dataSource 관리 MVVM 구조에서 보통 dataSource를 사용할 때 아무런 큐 없이 구현하지만, 데이터 처리 최적화를 위해 background 시키고 싶은 경우 중간중간 DispatchQueue.global()를 사용하거나 커스텀 큐를 사용하는 경우가 존재 개발자가 실수로 DispatchQueue.global()를 사용하게 되면, 이 큐는 serial이 아닌 concurrent이므로 value type인 dataSource 배열을 수정과 동시에 읽기를 하다가 크래시가 발생하는 경우가 존재 크래시 - 이전 Memory Access Conflict 글 참고 이럴때는 커스텀 큐를 선언하여 관리하는것이 가장 좋은데, 먼저 queue의 종류를 이해가 필요 DispatchQueue의 종류 3가지 * 이..
기본지식) sync, async, serial, concurrencysync, asyncsync - 해당 작업이 끝날때까지 대기async - 대기하지 않음비동기가 필요한 이유? 대용량 이미지 파일 다운로드 시 기다리면 UI멈춘것처럼 보임serial, concurrencyserial - 하나의 스레드로 처리concurrency - 여러개의 스레드로 작업을 분산각각 독립적이지만 유사한 여러개의 작업을 처리하는 경우 (당근 마켓에서 반복적인 cell들의 물품 이미지 다운)async vs concurrency 차이점?async는 일의 시작 순서가 순서대로처리 하지 않음concurrency는 일의 시작 순서는 차례대로 하지만 동시에 처리DispatchQueue.main.sync 사용 주의 사항deadlock 걸리..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ZLYcO/btrvHZpDLxj/ZWH8IDMBQVw6AMmZJ5KXc0/img.png)
인라인의 개념 swift에만 있는 기능이 아닌, 일반적으로 프로그래밍 언어에 있는 기능 컴파일러 최적화에서 사용 인라인이란, 메서드 호출을 해당 메서드의 본문으로 대체하는 컴파일러 최적화 방법 일반적인 메소드를 호출하는 작업: 스레드에 있는 스택 테스크(추적, 앱 상태 전송, 저장, 변경)하는 과정이 존재 (장점 - 디버깅 용이, 단점 - 오버헤드) 인라인을 사용한 경우, 메소드 호출: 스택을 따로 추적하지 않고 메소드의 본문을 바로 가져다가 사용 (장점 - 오버헤드 감소, 단점 - 함수 body가 재귀 호출과 같은 반복이 있는 경우에는 더 비효율적) ex) 인라인의 개념 예제 인라인이 적용되지 않은 것 override func viewDidLoad() { super.viewDidLoad() self.p..