메서드

Minseong·2022년 2월 20일
0

swift

목록 보기
4/10

메서드(Methods)

  • 타입과 연관된 함수
  • 타입의 인스턴스 동작을 위한 특정 작업과 기능을 캡슐화하는 인스턴스 메서드를 정의할 수 있다
  • 타입 자체와 연관된 타입 메서드를 정의할 수도 있다

인스턴스 메서드 (Instance Methods)

  • 인스턴스 메서드 (Instance methods) 는 특정 클래스, 구조체, 또는 열거형의 인스턴스에 속하는 함수
  • 인스턴스 프로퍼티에 접근하고 수정하는 방법을 제공하거나 인스턴스의 목적과 관련된 기능을 제공
  • 인스턴스 메서드는 함수 (Functions) 에서 설명한 대로 함수 구문과 완벽하게 동일
  • 인스턴스 메서드는 다른 인스턴스 메서드와 타입의 프로퍼티에 암시적으로 접근할 수 있습니다
  • 인스턴스 메서드는 자신이 속한 타입의 특정 인스턴스에서만 호출될 수 있습니다. 기존 인스턴스 없이는 호출할 수 없다.
//작업이 발생한 횟수를 계산하는데 사용할 수 있는 간단한 Counter 클래스 정의의 예
class Counter {
    var count = 0
    func increment() {
        count += 1
    }
    func increment(by amount: Int) {
        count += amount
    }
    func reset() {
        count = 0
    }
}
//프로퍼티와 동일하게 점 구문으로 인스턴스 메서드를 호출
let counter = Counter()
// count = 0
counter.increment()
// count = 1
counter.increment(by: 5)
// count = 6
counter.reset()
// count = 0

인스턴스 메서드 내에서 값 타입 수정 (Modifying Value Types from Within Instance Methods)

  • 기본적으로 값 타입의 프로퍼티는 인스턴스 메서드 내에서 수정x
  • func 키워드 전에 mutating 키워드를 사용하면 암시적으로 self 프로퍼티에 새로운 인스턴스를 할당하고 새로운 인스턴스는 메서드가 종료되면 기존에 존재하던 인스턴스를 대체
struct Point {
    var x = 0.0, y = 0.0
    mutating func moveBy(x deltaX: Double, y deltaY: Double) {
        x += deltaX
        y += deltaY
    }
}
var somePoint = Point(x: 1.0, y: 1.0)
somePoint.moveBy(x: 2.0, y: 3.0)
print("(\(somePoint.x), \(somePoint.y))")
//(3.0, 4.0)

타입 메서드(Type Methods)

  • 타입 자체에서 호출되는 메서드, 이런 종류의 메서드를 타입 메서드 (type methods) 라고 한다
  • 메서드의 func 키워드 전에 static 키워드를 작성하여 타입 메서드를 나타냄
  • 클래스는 대신 class 키워드를 사용하여 하위 클래스가 해당 메서드의 수퍼 클래스 구현을 재정의 할 수 있다
  • 타입 메서드는 인스턴스 메서드처럼 점 구문으로 호출
class SomeClass {
    class func someTypeMethod() {
        // type method implementation goes here
    }
}
SomeClass.someTypeMethod()
profile
안녕하세요! ios 공부 중인 초보 개발자입니다!

0개의 댓글

관련 채용 정보