일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- jest
- queue
- IOS
- 힛잇
- hokeys
- 스벨트
- data structure
- 자료구조
- 개발자
- hokidoki
- 계명대
- 이종호
- react
- 개발
- 리액트
- TDD
- 자바스크립트
- 비동기
- HTML
- 자스민
- 리액트 예제
- 자바스크립트 자료구조
- 스위프트
- 호키도키
- Svelte
- SWIFT
- 계명대 이종호
- 호키스
- javascript
- Hitit
- Today
- Total
Dog foot print
[SWIFT] 메서드 본문
메서드
메서드는 일종의 함수로써 클래스나, 구조체, 열거형과 같은 객체 내에서 함수가 선언 될 경우 이를 메소드라고 통칭한다. 메서드
는 객체 내부에서 정의되어 객체를 통해 사용이 가능하다는 점이 일반 함수와 차이점이다.
메서드의 종류는 클래스 메서드
와 인스턴스 메서드
이렇게 두 종류가 있다. 인스턴스 메서드는 인스턴스화 된 객체를 통해서만 사용이 가능하고, 클래스 메서드는 인스턴스를 통하지 않고, 사용 할 수 있다는 점이 다르다.
인스턴스 메서드
import UIKit;
class Foo{
func FooFunc () -> String {
print("FooFunc실행");
return "hello method";
}
}
let myFoo = Foo();
let message = myFoo.FooFunc(); //Foofunc실행
print(message)//hello method
인스턴스 메서드는 일반 함수를 정의할 때와 동일합니다. 사용방법은 일반 함수와 달리 인스턴스에 종속되어 있으므로, 인스턴스.메서드명()
형태로 호출 하면 됩니다.
메서드에서는 일반함수와 달리 self
라는 예약어를 사용 할 수 있는데, 이 예약어는 메서드내에서 호출된 인스턴스를 가리키는 용어이다. 이는 구조체나 열거형에서도 동일하게 사용 가능합니다.
import UIKit;
class Foo{
var a = "Foo";
func FooFunc () -> String {
print("FooFunc실행");
self.a = "Boo";
return "hello method";
}
}
let myFoo = Foo();
print(myFoo.a) //Foo
let message = myFoo.FooFunc(); //Foofunc실행
print(myFoo.a) //Boo
print(message)//hello method
Tip : self 를 사용하지 않아도, 변수명을 통해 해당 멤버에 접근 할 수는 있지만, 함수내부에서 동일한 변수명이 존재한다면 해당 변수가 스코프에 잡히니, 인스턴스의 멤버변수에 접근하려면 self
키워드를 사용하는 것이 바람직 합니다 .
mutating
import UIKit
struct Foo{
var x = 10, y = 20;
mutating func fooFunc(){
self.x = 20;
self.y = 30;
}
}
var myFoo = Foo();
myFoo.fooFunc()
myFoo.x
myFoo.y
구조체나 열거형에서는 메서드를 통해서, 인스턴스의 프로퍼티를 수정하기 위해서는 반드시 func 앞에 mutating
을 명시해주어야 한다.
타입 메서드
메서드는 인스턴스화가 진행되어야지 사용 할 수 있지만, 클래스나 구조체 선언을 통해 실행 할 수 도 있는 메서드를 타입 메서드
라고 합니다. 타입 메서드의 종류는 static
키워드를 사용하여, 하위 클래스에서 재 정의가 불가능한 것과 class
키워드를 사용하여, 하위 클래스에서 재 정의가 가능한 메서드가 존재합니다.
Note : 구조체에서는 static
메서드만 사용 가능합니다.
Note : 타입 메서드에서는 self
키워드를 통해 멤버 변수에 접근 할 수 없습니다.
Note : 타입 메서드에서 self
키워드를 통해 타입 프로퍼티와 타입 메서드에만 접근 가능 합니다.
class Foo{
static func staticFooFunc(message : String){
print(message);
}
class func classFooFunc(){
print("재정의가 가능하다 !!")
}
}
Foo.staticFooFunc(message :"hello static!")
Foo.classFooFunc()
let myFoo = Foo();
Foo.classFooFunc
#swift
'IOS > Swift' 카테고리의 다른 글
[SWIFT] Type casting (0) | 2021.07.20 |
---|---|
[SWIFT] 상속 (0) | 2021.07.15 |
[SWIFT] 프로퍼티 (0) | 2021.07.13 |
[SWIFT] 구조체와 클래스 (0) | 2021.07.13 |
[SWIFT] CLOSURE (0) | 2021.07.09 |