일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바
- View
- Swift
- observable
- 알고리즘
- 프로그래머스
- ios
- 구조체
- concurrency
- 이스케이핑
- 해시
- 클로저
- 프래그먼트
- rx
- 프로퍼티
- 풀이
- 리스트뷰
- Subject
- async
- 생명주기
- RxSwift
- 옵셔널
- Self
- 연산자
- 안드로이드
- 차이
- 스위프트
- noncopyable
- weak
- 백준
- Today
- Total
목록Swift/스위프트 정리 (19)
study record
클로저란? 클로저는 코드블럭으로 어떤 상수나 변수의 참조를 캡쳐해 저장할 수 있다. 스위프트는 캡처 관련 메모리를 알아서 처리한다. 클로저의 세 가지 형태 전역 함수 : 이름이 있고 어떤 값도 캡처하지 않는 클로저 중첩 함수 : 이름이 있고 관련한 함수로부터 값을 캡쳐할 수 있는 클로저 클로저 표현 : 경량화된 문법으로 쓰여지고 관련된 문맥으로부터 값을 캡쳐할 수 있는 이름이 없는 클로저 클로저에서는 argument label 은 쓰이지 않고 parameter name만 쓰임 closure("Sodeul") closure(name: "Sodeul") //error! 클로저는 익명이지만 함수이므로 1급 객체 함수의 특성을 다 가지고 있다. 클로저를 변수나 상수에 대입할 수 있다. 함수의 파라미터 타입으로 ..
참조 타입은 하나의 인스턴스가 참조를 통해 여러 곳에서 접근하기 때문에 언제 메모리에서 해제되는가가 중요한 문제이다. 적절한 시점에 인스턴스가 해제되지 않으면 한정적인 메모리 자원을 낭비하게 되고, 이는 성능 저하로 이어질 수 있다. Swift는 프로그램의 메모리 사용을 관리하기 위해 메모리 관리 기법인 ARC(Automatic Reference Counting)을 사용한다. ARC가 관리해주는 Reference Counting (참조 횟수 계산)은 참조 타입인 클래스의 인스턴스에만 적용된다. 구조체나 열거형은 값 타입으로 다른 곳에서 참조하지 않기 때문에 ARC로 관리할 필요가 없다. ARC란? ARC는 자동으로 메모리를 관리해주는 방식이다. 대부분의 경우 메모리 관리는 Swift에서 그냥 작동하기 때..
Dispatch란? Dispatch란 어떤 메서드를 호출할 것인지를 결정하여, 그것을 실행하는 메커니즘이다. Swift에서는 Static Dispatch와 Dynamic Dispatch 두 가지 방식이 있다. 즉, 호출할 함수를 "컴파일 타임"에 결정하느냐, "런타임"에 결정하냐에 따른 방식이다. Static Dispatch(Direct Call) "컴파일 타임"에 호출될 함수를 결정하여, 런타임 때 그대로 실행한다. 컴파일 타임에 결정이 되기 때문에 성능상 이점을 가질 수 있다. Dynamic Dispatch(Indirect Call) "런타임"에 호출될 함수를 결정한다. Swift에서는 클래스마다 함수 포인터들의 배열인 vTable(Virtual Dispatch Table)을 유지한다. 하위 클래스가..

Retain Retain 즉 순환참조 여부를 묻는 것이다. retain : 메모리가 해제되지 않아서 낭비되는 현상을 의미 (Memory Leak) Delegate Delegate 패턴은 어떤 객체가 해야할 일을 대신 처리하도록 프로토콜을 채택하여 위임하는 것 프로토콜에서 필요한 일들을 먼저 작성한다. tableView.delegate = self 이후 프로토콜을 채택하여 위임자(동작을 대신해줄 사람)가 누구인지 알려주면 프로토콜에 정의된 여러 메소드들을 self에서 사용하겠다는 뜻이다. 1. 프로토콜 안에 특정 기능을 할 함수들을 깡통함수로 선언 2. 프로토콜을 변수로 선언 3. vc에서 프로토콜 채택 4. 프로토콜 변수에 self로 대리자 위임. 5. 관련 업무 수행하도록 구현 Delegate의 Ret..