BIBI BLOG
[Swift] self와 Self를 구분하는 법: 차이점과 예시 본문
728x90
1. self 란?
- 정의: self는 현재 인스턴스(객체) 자신을 가리키는 키워드입니다.
- 언제 사용하나요?: 클래스나 구조체 안에서 자기 자신의 프로퍼티나 함수를 부를 때 사용합니다.
예시
class Person {
var name: String
init(name: String) {
// 이니셜라이저에서 매개변수와 프로퍼티 이름이 같을 때 구분하기 위해 사용합니다.
self.name = name
}
func sayHello() {
// 자신의 name 프로퍼티를 사용합니다.
print("안녕하세요, 저는 \(self.name)입니다.")
}
}
let student = Person(name: "민수")
student.sayHello()
// 출력: 안녕하세요, 저는 민수입니다.
위 예시에서 self.name은 Person 객체(인스턴스)의 name을 의미합니다.
2. Self 란?
- 정의: Self는 현재 타입(클래스, 구조체 등) 자체를 가리키는 키워드입니다.
- 언제 사용하나요?: 특정 문맥에서 “이 타입 자체”를 나타내야 할 때 사용합니다.
예시
아래 예시에서 Self 키워드는 자기 자신의 타입을 반환해야 하는 경우에 활용됩니다.
protocol Copyable {
func clone() -> Self
}
struct Message: Copyable {
var text: String
// clone 메서드는 자기 자신의 타입을 반환해야 하므로 반환 타입을 Self로 표시합니다.
func clone() -> Self {
return Message(text: self.text)
}
}
let original = Message(text: "예시 문구")
let copied = original.clone()
print(copied.text)
// 출력: 예시 문구
위 예시에서는 Self가 Message 구조체를 의미하므로, clone() 메서드에서는 새로운 Message 인스턴스를 생성해 반환해야 합니다.
3. self vs Self 비교 정리
- 역할이 다릅니다.
- self: 현재 인스턴스(객체)
- Self: 현재 타입(클래스, 구조체 등)
- 사용 위치가 다릅니다.
- self: 클래스나 구조체 내부에서 프로퍼티나 메서드를 호출할 때
- Self: 클래스나 구조체 그 자체를 가리킬 때
- 생략 가능 여부
- self: 혼동이 없다면 생략할 수 있지만, 가독성을 위해 명시적으로 쓰기도 합니다.
- Self: 특정 상황에서 “타입 그 자체”를 명시해야 할 때 사용하므로, 생략이 불가능한 경우가 많습니다.
🔷 마무리
- self는 “실제로 만들어진 객체”를 의미하고,
- Self는 “클래스나 구조체 같은 설계도 자체”를 가리킵니다.
728x90
'iOS > Swift' 카테고리의 다른 글
🔍 [Swift] 문자열 포함 여부 확인 – contains 사용법과 주의할 점 (0) | 2025.04.13 |
---|---|
Modifying state during view update, this will cause undefined behavior 해결하기☀️ (0) | 2025.04.03 |
[swift] Concurrency withCheckedThrowingContinuation 알아보기 (0) | 2025.04.01 |
[Swift] Result 타입 살펴보기🏋️♀️ (0) | 2025.03.28 |
[Swift] SOLID 원칙 살펴보기 (0) | 2025.03.26 |
Comments