본문 바로가기
2021_iOS [ Swift ]/강의 내용 정리

5주차 : Swift 문법 4 [ 1급 객체(first class object), 클로저(closure), 클래스(class)]

by 황민우 2021. 10. 3.

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학기)한성현교수님 강의 내용 변형 및 요약'

댓글