extension(익스텐션)
▸ class, struct, enum, protocol에 새로운 기능을 추가
▸ 하위 클래스를 생성하거나 참조하지 않고 기존 클래스에 메서드, 생성자(initializer), 계산 프로퍼티 등의
기능을 추가하기 위하여 사용
▸ 클래스(구조체, 열거형, protocol)는 다음과 같은 형태로 확장(익스텐션)함
형식
extension 기존타입이름 {
// 새로운 기능
}
access modifier
▸ 접근 속성(접근 수정자, 액세스 수정자, 액세스 지정자 )는 클래스, 메서드, 멤버의 접근 가능성을
설정하는 객체 지향 언어의 키워드
▸ 구성 요소를 캡슐화 하는 데 사용
swift의 access control
public class MyClass{
// 모듈의 모든 소스 파일 내에서 접근+정의한 모듈을 가져오는 다른 모듈의 소스파일에서도 접근 가능
fileprivate var name : String = "Kim"
//현재 소스 파일 내에서만 사용 가능
private func play() {}
//현재 블럭 내에서만 사용 가능
func display(){} // internal 생략됨
//해당 모듈의 모든 소스 파일 내에서 사용
}
접근 제어
▸ private : 블록과 동일한 파일에 있는 해당 선언의 extension으로 제한한다.
▸ fileprivate : 해당 소스 파일 내에서만 사용가능
▸ internal : 접근 제어를 생략하면 internal이 기본
▸ public
▸ open : 접근은 클래스 및 클래스 멤버에만 적용(구조체같은곳에서 사용 X)
프로토콜(protocol)
▸ 특정 클래스와 관련없는 함수(메서드)들의 선언 집합
▸ 함수(메서드) 정의는 없음
▸ 기능이나 속성에 대한 설계도
▸ 클래스, 구조체(struct), 열거형(enum), extension에 프로토콜을 채택(adopt)할 수 있다.
Protocol Oriented Programming(POP)
▸ 프로토콜 단위로 묶어 표현하고, extension으로 기본적인 것을 구현(protocol default implementation)을 해서 단일 상속의 한계를 극복
protocol 프로토콜명{
프로퍼티명
메서드 선언 //메서드는 선언만 있음
}
protocol 프로토콜명 : 부모1프로토콜, 부모2프로토콜{
// 프로토콜은 다중 상속도 가능
}
열거형(enum)
▸ 입력 받을 값이 한정되어 있을 때
▸ 특정 값 중 하나만 선택하게 할 때
형식
enum 열거형명{
열거형 정의
}
ex ) enum Compass {
case North, South, East, West
}
'iOS프로그래밍기초(21-2학기)한성현교수님 강의 내용 변형 및 요약'
'2021_iOS [ Swift ] > 강의 내용 정리' 카테고리의 다른 글
App Icon , Launch Screen 만들기 (0) | 2021.11.10 |
---|---|
Xcode 화면구성 (0) | 2021.11.02 |
6주차 : Swift 문법 5 [ 클래스, Failable initializer , 상속, override ] (0) | 2021.10.11 |
5주차 : Swift 문법 4 [ 1급 객체(first class object), 클로저(closure), 클래스(class)] (0) | 2021.10.03 |
4주차 : Swift 문법 3(guard, switch-case, where, 함수) (0) | 2021.09.25 |
댓글