티스토리 뷰
특정 타입의 클래스, 구조체, 열거형과 관련된 함수를 메서드라고 부른다.
이는 다른 언어의 메서드와 비슷한 특징을 가지고 있다. 한번 확인해보자.
1. 인스턴스 메서드
인스턴스 메서드는 특정 클래스, 구조체, 열거형의 인스턴스에 속한 메서드이다. 이 메서드를 통해 인스턴스의 값을 제어하거나 변경할 수 있다.
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이 됩니다.
2. self Property
모든 프로퍼티는 암시적으로 인스턴스 자체를 의미하는 self라는 프로퍼티를 갖는다.
class Counter {
var count = 0
func increment() {
self.count += 1
}
func increment(by amount: Int) {
self.count += amount
}
func reset() {
self.count = 0
}
}
self를 사용하면 아래와 같이 인자와 프로퍼티 변수 간 모호함을 없애고 클린하게 코드를 작성할 수 있다.
struct Point {
var x = 0.0, y = 0.0
func isToTheRightOf(x: Double) -> Bool {
return self.x > x
}
}
let somePoint = Point(x: 4.0, y: 5.0)
if somePoint.isToTheRightOf(x: 1.0) {
print("This point is to the right of the line where x == 1.0")
}
3. 인스턴스 메서드 내에서 값 타입 변경(구조체, 열거형)
구조체와 열거형의 경우 값 타입이기 때문에 인스턴스 메서드 내에서 값 타입의 프로퍼티를 변경할 수 없지만 mutating 키워드를 사용하면 이를 가능하게 할 수 있다.
mutating 을 메서드에 붙여주면 메서드의 계산이 끝난 후 원본 구조체에 그 결과를 덮어 써서 그 값을 변경한다.
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("The point is now at (\(somePoint.x), \(somePoint.y))")
// "The point is now at (3.0, 4.0)" 출력
Mutating 메서드에서 self 프로퍼티를 사용하여 완전히 새로운 인스턴스를 생성하여 덮어 쓸 수도 있다.
struct Point {
var x = 0.0, y = 0.0
mutating func moveBy(x deltaX: Double, y deltaY: Double) {
self = Point(x: x + deltaX, y: y + deltaY)
}
}
4. 타입 메서드
인스턴스 메서드는 특정 타입의 인스턴스에서 호출되고, 타입 메서드는 특정 타입 자체에서 호출하여 사용하는 메서드이다.
선언은 메서드 키워드 func 앞에 static 또는 class 키워드를 추가하면 되는데, static은 서브 클래스에서 오버라이드할 수 없지만, class는 서브 클래스에서 오버라이드할 수 있다는 차이가 있다.
class SomeClass {
class func someTypeMethod() {
// 타입 메소드 구현
}
}
SomeClass.someTypeMethod() // 타입 메소드 호출!
반응형
'Mobile > ios' 카테고리의 다른 글
[ios] swift 기본 문법 정리 12: Inheritance (0) | 2022.12.06 |
---|---|
[ios] swift 기본 문법 정리 11: Subscripts (0) | 2022.12.01 |
[ios] swift 기본 문법 정리 9: Properties (0) | 2022.11.30 |
[ios] swift 기본 문법 정리 8: 클래스와 구조체 (0) | 2022.11.30 |
[ios] swift 기본 문법 정리 7: Enum (0) | 2022.11.29 |
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
- javascript
- 맛집
- react
- Promise
- await
- redux-thunk
- 파니노구스토
- 인천 구월동 이탈리안 맛집
- AsyncStorage
- react-native
- 인천 구월동 맛집
- Async
- 정보보안기사 #실기 #정리
- redux
- 이탈리안 레스토랑
- Total
- Today
- Yesterday