안녕하세요 이웃님들~ 저번 게시글에 이어서 문법 정리 이어서 해보도록 하겠습니다~~
꼭! SeSAC이 되기위해 개발하는 윤기사는 더 열심히 코딩 공부 하도록 하겠습니다!
이번 게시글에서는 클로저와 메소드, 그리고 상속에 대해 알아보겠습니다!
- 클로저 (Closure) -
클로저는 어떤 상수나 변수의 참조를 캡쳐(capture)해 저장할 수 있습니다.
스위프트는 이 캡쳐와 관련한 모든 메모리를 알아서 처리합니다!
클로저는 특정 문맥의 상수나 변수의 값을 캡쳐할 수 있습니다. 원본 값이 사라져도 클로져의 바디 안에서 그 값을 활용할 수 있는 거죠!
클로저의 형태는 3가지로 나누어볼 수 있습니다!
- 전역 함수 (Global Function) : 이름이 있고 어떤 값도 캡쳐하지 않는 클로저
- 중첩 함수 (Nested Function) : 이름이 있고 관련한 함수로 부터 값을 캡쳐 할 수 있는 클로저
- 클로저 표현 : 경량화 된 문법으로 쓰여지고 관련된 문맥(context)으로부터 값을 캡쳐할 수 있는 이름이 없는 클로저
sorted(by:)는 배열의 콘텐츠와 같은 타입을 갖고 두개의 인자를 갖는 클로저를 인자로 사용합니다.
names의 콘텐츠는 문자열 타입이므로 (String, String) -> Bool 의 타입의 클로저를 사용해야 합니다!
"랜덤배열" 클로저를 만들고 그것을 names.sorted(by: 랜덤배열)에 넣으면 원본 배열의 순서가 바뀐 배열을 얻을 수 있습니다.
클로저는 참조 타입입니다!!
함수나 클로저를 상수나 변수에 할당할 때 실제로는 상수와 변수에 해당 함수나 클로저의 참조(reference)가 할당 됩니다.
그래서 만약 한 클로저를 두 상수나 변수에 할당하면 그 두 상수나 변수는 같은 클로저를 참조하고 있습니다.
- 메소드 (Methods) -
특정 타입의 Class, Struct, Enum과 관련된 함수를 뜻합니다.
특정 타입의 인스턴스에서 실행할 수 있는 메소드를 인스턴스 메소드(Instance Methods)
특정 형과 관련된 메소드를 타입 메소드(Type Methods)라 합니다.
첫 번째로, 인스턴스 메소드는 이름 그대로 그 인스턴스가 속한 특정 타입의 인스턴스에서만 실행 가능합니다.
두 번째로, 타입 메소드는 특정 타입 자체에서 호출해 사용하는 메소드입니다.
타입 메소드의 선언은 메소드 키워드 func앞에 static이나 class키워드를 추가하면 됩니다!
static메소드와 class메소드의 차이점은
1) static메소드는 서브클래스에서 오버라이드 할 수 없는 타입 메소드(Override(X))
2) class메소드는 서브클래스에서 오버라이드 할 수 있는 타입 메소드(Override(O))
- 메소드 (Methods) -
클래스는 메소드, 프로퍼티와 다른 특징(characteristics)을 다른 클래스로 부터 상속할 수 있습니다.
클래스에서는 저장된 프로퍼티/계산된 프로퍼티와 상관없이 상속받은 프로퍼티에 프로퍼티 옵저버를 설정해서 값 설정에 반응이 가능합니다!
스위프트에서 상속의 특징입니다!
- 구조체는 불가능하고, 클래스에는 가능하다.
- 자식 클래스가 부모클래스로부터 기능을 물려받는것
- 상속 받은 클래스도 새로운 자식 클래스에게 상속 가능
- 단일 상속만 가능
서브클래스에서는 상속받은 저장된 프로퍼티, 계산된 프로퍼티 모두 오버라이드가 가능합니다.
오버라이드시에는 프로퍼티의 이름과 타입을 명시해야합니다.
서브클래스에서는 단순히 상속받은 특정 형의 프로퍼티가 있다는 정도만 알고 있기 때문입니다.
* 상속받은 읽기전용 프로퍼티도 getter/setter를 정의해서 읽고/쓰기가 가능한 프로퍼티로 변경해서 제공 가능합니다.
* 하지만 반대의 읽고/쓰기가 가능한 프로퍼티를 읽기전용 프로퍼티로 선언하는 것은 불가능합니다.
게시글 잘 보셨나요?
이번 포스팅은 여기서 마치도록 하겠습니다~ SeSAC이 되는 거에서 만족하지 않고, 개발자로 성공하기 까지 개발하는 윤기사는 더 열심히 빡코딩 하도록 하겠습니다~
감사합니다 ^^
'iOS 앱 개발자 윤기사🍎' 카테고리의 다른 글
[SeSAC iOS 앱 개발자 데뷔과정 2기] 합격 과정부터 수료 이후까지 최종 후기 ^_^ (36) | 2023.04.09 |
---|---|
[앱 출시 후기] One Percent : 국내주식 - 나만의 매매일지 (1) | 2022.10.05 |
[SeSAC iOS 앱개발자 데뷔과정 2기] 최종합격 후기... (31) | 2022.07.04 |
[SeSAC iOS 앱개발자 데뷔과정 2기] 레벨테스트 합격!! _ 1 (31) | 2022.06.13 |
[SeSAC iOS 앱개발자 데뷔과정 2기] 서류합격!! (32) | 2022.06.04 |