swift의 함수는 1급 객체이다.
- 1급 객체(first class object) 또는 1급 시민(first class citizen)
다음 조건을 충족하는 객체를 1급 객체라고 한다.
1) 변수에 저장할 수 있다.
2) 매개변수로 전달할 수 있다.
3) 리턴값으로 사용할 수 있다.
클로저 표현식
- 익명함수
- 독립적인 코드 블록
클로저 표현식 변형 전 일반 함수
func add(x: Int, y: Int) -> Int {
return(x+y)
}
클로저 표현식 함수
{ (x: Int, y: Int) -> Int in
return(x+y)
}
클로저 표현식은 매개변수를 받거나, 값을 반환하도록 만들 수도 있음
{(<매개변수 이름>: <매개변수 타입>, … ) -> <반환 타입> in
// 클로저 표현식 코드
}
후행 클로저(trailing closure)
클로저가 함수의 마지막 argument라면 마지막 매개변수명(cl)을 생략한 후 함수 소괄호 외부에 클로저를 작성
func someFun(cl: () -> Void) {
}
// trailing closure를 사용 안하면
someFun(cl: {
//closure’s body
})
// trailing closure 사용
someFun() {
//trailing closure's body goes here
}
클로저가 함수의 마지막 argument라면 마지막 매개변수 이름(handler:)을 생략한 후 함수 소괄호 외부에 클로저를 구현
변경 전
let removeAction = UIAlertAction(title: "제거", style:
UIAlertAction.Style.destructive, handler: {
ACTION in self.lampImg.image = self.imgRemove
self.isLampOn=false
})
후행 클로저 후
let onAction = UIAlertAction(title: "On", style:
UIAlertAction.Style.default) {
ACTION in self.lampImg.image = self.imgOn
self.isLampOn=true
}
Class
클래스 → 객체 → 인스턴스
: 클래스로부터 만들어진 객체를 인스턴스라고 한다.
인스턴스 : 실제로 메모리에 할당된 객체
객체 : 데이터 변수 or 속성, 함수 or 메서드
클래스 : 설계도와 같이 객체가 생성되었을 때 어떤 모습을 보일 것인지를 정의
Swift에서 클래스 선언하기
class 새로운 클래스 이름 : 부모 클래스 {
// 프로퍼티
// 인스턴스 메서드
// 타입(type) 메서드(클래스 메서드)
}
- 프로퍼티 부분은 클래스 내에 포함되는 변수와 상수를 정의
- 인스턴스 메서드는 객체가 호출하는 메서드를 정의
- 타입 메서드는 클래스가 호출하는 메서드 정의
프로퍼티
1, 초기값이 있거나
2. init을 이용해서 초기화하거나
3. 옵셔널 변수(상수)로 선언(자동으로 nil로 초기화)
'iOS프로그래밍기초(21-2학기)한성현교수님 강의 내용 변형 및 요약'
'2021_iOS [ Swift ] > 강의 내용 정리' 카테고리의 다른 글
7주차 [ Swift 문법 : extension, 접근 제어, protocol, enum] (0) | 2021.10.14 |
---|---|
6주차 : Swift 문법 5 [ 클래스, Failable initializer , 상속, override ] (0) | 2021.10.11 |
4주차 : Swift 문법 3(guard, switch-case, where, 함수) (0) | 2021.09.25 |
3주차 : Swift 문법 2(Optional, as, nil, Any, AnyObject, 연산자, 제어문1) (0) | 2021.09.15 |
튜플 [ Tuple ] (0) | 2021.09.09 |
댓글