Swift - 메소드

메서드

  • 메서드는 특정 타입에 관련된 함수
  • 타입(클래스, 구조체, 열거형)의 인스턴스가 특정 작업을 수행하기 위한 캡슐화된 인스턴스 메서드 구현 가능.
  • 타입 자체와 관련된 기능을 수행하기 위해 타입 메서드 정의 가능.
  • 구조체와 열거형이 메서드를 가질 수 있다는 것은 기존 프로그래밍 언어와 스위프트의 큰 차이점 중 하나입니다.

인스턴스 메서드

  • 인스턴스 메서드는 특정 타입의 인스턴스에 속한 함수를 뜻합니다. 인스턴스 내부의 프로퍼티의 값을 변경하거나 특정 연산 결과를 반환하는 등 인스턴스와 관련된 기능을 수행합니다.
  • 특정 타입 내부에 구현, 인스턴스가 존재할 때만 사용 가능함.
  • 인스턴스 메서드에서 self가 인스턴스를 가리킴.

    타입의 저장 프로퍼티의 값을 수정하는 인스턴스 메서드의 경우, 클래스가 아닌 구조체 및 열거형은 값 타입이므로 메서드 앞에 mutating 키워드를 붙여야합니다.(해당 인스턴스 메서드가 인스턴스 내부의 값을 변경한다는 것을 명시하는 것.)

self 프로퍼티

  • 모든 인스턴스는 암시적으로 생성된 self 프로퍼티를 포함.
  • self 프로퍼티는 인스턴스를 더 명확히 지칭하고 싶을 때 사용.
  • 클래스의 인스턴스는 참조타입이라서 self 프로퍼티에 다른 참조를 할당 불가.
  • 구조체, 열거형은 self 프로퍼티를 사용하여 자신 자체를 치환 가능.

    Swift는 자동으로 메서드 내부에 선언된 지역변수를 먼저 사용하고, 그다음 메서드 매개변수, 그다음 인스턴스의 프로퍼티를 찾습니다.

타입 메서드

  • 타입 자체에 호출이 가능한 메서드를 타입 메서드라 지칭.
  • static 키워드와 class 키워드를 사용하여 정의
    • static 키워드로 정의하면 상속 후 메서드 재정의 불가
    • class 키워드로 정의하면 상속 후 메서드 재정의 가능
  • 타입 메서드에서 self는 타입을 가리킴.
    • 타입 메서드 내부에서 타입 이름과 self는 같은 뜻.

글의 일부 내용은 야곰님의 저서 스위프트 프로그래밍(2017, 한빛미디어)를 참고하여 작성되었습니다.