swift TIL repo
어떤 특별한 기준 없이, 저에게 애매했던 지점을 공부한 내용을 기록합니다.
공부하며 마주친 개념들에 대해서도 기록합니다.
주제 | 세부 주제 | 키워드 |
---|---|---|
GCD | • 프로세스와 쓰레드 |
프로세스와 쓰레드 MainThread Global Thread |
• Sync/Async, Concurrent/Serial | Sync/Async Serial/Concurrent |
|
• GCD • QoS • DispatchSemaphore |
thread/task 동시성 프로그래밍 Queue GCD Dispatch Queue QoS |
|
Thread-safe | •Thread-safe | Multi-Threading Thread-safe atomic race conditions deadlocks |
COW | • COW | Copy On Write |
ARC | • 메모리구조 | 메모리구조 code data heap stack |
• ARC | ARC Auto Reference Counting |
|
• 강한 순환 참조 오류와 해결 | strong Strong Reference Cycles weak unowned |
|
Delegate 패턴 | • 델리게이트패턴 | delegate pattern |
Singleton 패턴 | • 싱글톤패턴 | singleton pattern thread-safe type property |
NotificationCenter | • 노티피케이션센터 | notification notification center |
접근제어자 | • 접근제어자 | access control open public internal fileprivate private 접근제어(set) |
객체지향프로그래밍(OOP) | • 객체지향 프로그래밍 • SOLID 원칙 • 다형성 |
OOP 추상화, 캡슐화, 상속성, 다형성 SOLID 의존성주입 |
프로토콜 지향 프로그래밍 | • 프로토콜 지향 프로그래밍 | 상속 컴포지션 확장 |
메소드 디스패치 | • 메소드 디스패치 | static dynamic |
소켓통신 | • TCP, UDP | TCP UDP |
아키텍처 패턴 | • 아키텍처패턴 • MVC • MVP • MVVM |
|
Hugging / Resistance Priority | • Hugging / Resistance Priority | Hugging Priority Resistance Priority |
.DS_Store | • .DS_Store | |
Combine | • Combine | |
뷰컨트롤러의 생명주기 | • ViewController LifeCycle | loadView viewDidLoad viewWillAppear viewWillDisappear |
Method Swizzling | • Method Swizzling | Method Swizzling |
Push Notification | • Push Notification • APNs • Push Notification 동작 방식 |
Apple Push Notification Service Device token |
주제 | 세부 주제 | 키워드 |
---|---|---|
Optional | • Optional | optional nil Optional Unwrapping Optional Binding Optional Chaining Optional 자동해제 Optional 묵시적 해제 |
Guard-else 구문 | • Guard-else | guard-else |
Overriding과 Overloading | • Overriding과 Overloading | Overriding Overloading final |
프로퍼티 | • 프로퍼티 • 타입프로퍼티 |
프로퍼티 저장프로퍼티 연산프로퍼티 타입프로퍼티 |
클래스와 구조체 | • 클래스와 구조체 • 참조 타입과 값 타입 |
class struct call by value call by reference |
Frame, Bounds | •Frame Bounds 차이 | Frame Bounds CGRect |
RxSwift DisposeBag | • DisposeBag 1 • DisposeBag 2 |
DisposeBag Disposable disposed(by:) dispose() insert() |
Closure | • Closure | closure 일급객체 |
고차함수 | • map | map |
KVC | • KeyPath • KVC |
KeyPath 프로퍼티참조 Key-Value Coding |
UIKit | • Cell 재사용 주의사항 | dequeueReusableCell prepareForReuse() |
SwiftUI | • LaunchScreen | LaunchScreen delay |
목차 | 세부 목차 | 키워드 정리 |
---|---|---|
1. 첫번째 iOS앱 만들기 | ||
1.1. 첫번째 앱, Hello, World! | - 프로젝트 기본 구조 - 프로젝트 구성과 스토리보드 - 스토리보드 - |
|
1.2. 시작 화면 제어하기 | - 런치스크린 | |
2. iOS 앱의 기본 구조와 코코아 터치 프레임워크 | - []() |
|
2.1 앱의 기본 구조 | - 앤트리포인트와 앱의 초기화 과정 - MVC 패턴 - 앱의 상태 변화 |
|
2.2 iOS와 코코아터치 프레임워크 | -iOS와 코코아터치 프레임워크 | |
3. 화면상의 객체를 제어하는 방법 | 3.1 @IBOutlet과 @IBAction | - @IBOutlet과 @IBAction |
4. 화면 전환 | 4.1 iOS에서의 화면 전환 개념 | - iOS에서의 화면 전환 - []() |
4.2 - 4.5 화면 전환 기법들 | - 뷰 이용 - 뷰 컨트롤러 직접호출 - 네비게이션 컨틀롤러 이용 - 세그웨이 이용 |
|
5. 다른 뷰 컨트롤러와 데이터 주고받기 | 5.1. 화면 전환 과정에서의 값 전달 방식 | - @IBAction의 sender Type: Any? - 화면전환: as? SecondViewController |
5.2. 뷰 컨트롤러에 직접 값을 전달하기 | - 프레젠테이션, 내비게이션, 세그웨이로 전달 | |
5.3 이전 화면으로 값을 전달하기 | - 이전 화면으로 값을 전달하기 | |
6. 사용자에게 메세지를 전달하는 방법 | 6.1 UIAlertController 6.2 로컬 알림 |
- UIAlertController, UserNotification |
7. 델리게이트 패턴 | 7. 델리게이트 패턴 | - 델리게이트패턴 |
7.1 텍스트 필드 | - 텍스트필드 | |
7.2 이미지 피커 컨트롤러 | - 이미지 피커 컨트롤러 | |
8. 테이블 뷰를 이용한 데이터 목록 구현 | ||
9. 네트워크 통신과 API | 9.1 네트워크 통신의 종류 | • 연결/비연결 지향 통신 • SOAP, RESTful • XML, JSON |
9.2 오픈 API와 공공 콘텐츠 | • 오픈 API • OAuth 2.0 |
|
9.3 오픈 API를 이용한 네트워크 실습 | • Data, URL, Log출력 • ATS(App Transport Security) |
|
10. 테이블 뷰의 동작원리 | 10.1 테이블 뷰를 스크롤할 때 발생하는 일들 | • 재사용 메커니즘 |
10.2 일반 뷰 컨트롤러에서 테이블 뷰 사용하기 | • tableView객체 사용하기 | |
11. 웹 뷰: 앱에서 웹 페이지를 여는 방법 | 11.1 WKWebView를 이용하여 영화 정보 상세 화면 구현하기 11.2 WKWebView |
• 사파리 앱, UIWebView, WKWebView, SFSafariViewController |