2023. 10. 17. 12:35ㆍiOS
1. closure
1.1. closure의 정의
- 특정 작업(함수)과 그 작업이 일어난 곳(환경 또는 상태)을 모두 기억하고 있는 도구
- 익명 함수
- Javascript, Swift, Python 등이 지원
1.2. closure의 활용
- closure의 표현식
{(매개변수명:매개변수 타입, ...) -> 반환 타입 in}
- closure 호출 시 argument label을 생략해야 한다.
- 일반 함수와 closure를 비교한 소스 예시
1.3. trailing closure
- closure가 함수의 마지막 argument일 경우 마지막 매개변수의 이름 대신 함수 소괄호 외부에 closure를 작성할 수 있는데,
이를 후행 클로저(trailing closure)라 한다.
- trailing closure 사용 여부에 따른 함수 변화 예시
1.4. Closure의 축약 표현
- Closure로 활용할 함수 math와 Closure 기본형
- trailing closure 사용 및 리턴형 생략
- 단축 인자를 사용하여 매개변수 생략
- closure는 마지막을 자동 리턴하므로 return문 생략
- 최종 축약 소스
2. class
2.1. 객체의 개념
2.2. 객체 지향 용어 비교
2.3. 클래스 선언
- 기본 구조
class 클래스명 : 부모 클래스 {
//property(변수 및 상수 정의)
//instance method(객체가 호출할 메서드 정의)
//type method(클래스가 호출할 메서드 정의)
}
- stored property: 초기값을 주거나 init을 이용하여 초기화 또는 옵셔널 래핑이 필요
- stored property를 가진 클래스 선언 예시
- instance method를 가진 Man 클래스 선언 예시
- class method: 클래스 내에서 사용하는 메서드로, class 혹은 static를 명시하여 구분한다.
- class를 사용하여 class method 선언 시, 자식 클래스에서 override가 가능하다.
- class method를 가진 Human 클래스 선언 예시
2.4. instance 생성
- 클래스 정의 시 default initializer가 자동으로 제공된다.
- 클래스를 통해 인스턴스 생성 시 반드시 initializer를 통해 초기화를 해야 하며,
생성자가 없을 경우 default initializer를 통해 초기화한다.
- 인스턴스 생성 후 instance method를 접근할 수 있다.
- Man 클래스로 kim 인스턴스 생성 예시
- class method는 클래스명을 사용하여 접근할 수 있다.
2.5. initializer
- 인스턴스가 생성될 때 수행하는 초기화 작업
- designated initializer: 모든 property를 초기화시키는 생성자
- init() 메서드를 정의할 경우 default initializer는 소멸
- 생성자를 선언한 클래스 예시
- self: 현재 클래스 내 메서드나 프로퍼티를 가리킬 때 메서드나 프로퍼티 앞에 self.를 붙여 표시한다.
- self를 사용하여 위의 생성자를 변경한 소스
2.6. method overloading
- method overloading: 매개변수의 개수와 자료형이 다른 이름이 같은 함수를 여러 개 정의하는 것을 말한다.
- 매개변수가 다른 생성자를 정의하여 인스턴스를 다양한 방법으로 생성할 수 있다.
- method overloading을 이용한 생성자 정의 예시
3. 참고자료: iOS프로그래밍 기초 강의 - 한성현 교수님
'iOS' 카테고리의 다른 글
Xcode - 2 (0) | 2023.11.07 |
---|---|
Mac 입문, Xcode 입문 (0) | 2023.10.31 |
Swift 함수, first class object - 1 (0) | 2023.10.10 |
Swift 문법 - 2 (0) | 2023.09.26 |
Swift 문법 - 1 (0) | 2023.09.19 |