Swift - 메소드
19 Mar 2017메서드
- 메서드는 특정 타입에 관련된 함수
- 타입(클래스, 구조체, 열거형)의 인스턴스가 특정 작업을 수행하기 위한 캡슐화된 인스턴스 메서드 구현 가능.
- 타입 자체와 관련된 기능을 수행하기 위해 타입 메서드 정의 가능.
- 구조체와 열거형이 메서드를 가질 수 있다는 것은 기존 프로그래밍 언어와 스위프트의 큰 차이점 중 하나입니다.
인스턴스 메서드
- 인스턴스 메서드는 특정 타입의 인스턴스에 속한 함수를 뜻합니다. 인스턴스 내부의 프로퍼티의 값을 변경하거나 특정 연산 결과를 반환하는 등 인스턴스와 관련된 기능을 수행합니다.
- 특정 타입 내부에 구현, 인스턴스가 존재할 때만 사용 가능함.
- 인스턴스 메서드에서 self가 인스턴스를 가리킴.
타입의 저장 프로퍼티의 값을 수정하는 인스턴스 메서드의 경우, 클래스가 아닌 구조체 및 열거형은 값 타입이므로 메서드 앞에 mutating 키워드를 붙여야합니다.(해당 인스턴스 메서드가 인스턴스 내부의 값을 변경한다는 것을 명시하는 것.)
self 프로퍼티
- 모든 인스턴스는 암시적으로 생성된 self 프로퍼티를 포함.
- self 프로퍼티는 인스턴스를 더 명확히 지칭하고 싶을 때 사용.
- 클래스의 인스턴스는 참조타입이라서 self 프로퍼티에 다른 참조를 할당 불가.
- 구조체, 열거형은 self 프로퍼티를 사용하여 자신 자체를 치환 가능.
Swift는 자동으로 메서드 내부에 선언된
지역변수를 먼저 사용하고, 그다음 메서드 매개변수, 그다음 인스턴스의 프로퍼티
를 찾습니다.
타입 메서드
- 타입 자체에 호출이 가능한 메서드를 타입 메서드라 지칭.
- static 키워드와 class 키워드를 사용하여 정의
- static 키워드로 정의하면 상속 후 메서드 재정의 불가
- class 키워드로 정의하면 상속 후 메서드 재정의 가능
- 타입 메서드에서 self는 타입을 가리킴.
- 타입 메서드 내부에서 타입 이름과 self는 같은 뜻.
글의 일부 내용은 야곰님의 저서 스위프트 프로그래밍(2017, 한빛미디어)를 참고하여 작성되었습니다.