Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 글또9기
- avaliable
- 주간 달력
- ios 개발 강의
- struct
- 생명주기
- class
- 연관값
- Switch
- 제어전송문
- copy-on-write
- On branch is up to date with ' '
- unrecognized selector sent to class
- uikit
- actionSheet
- error해결
- K디지털기초역량훈련
- 파스칼표기법
- 코드스니펫
- 내_삶
- IOS
- 바이트디그리
- SWIFT
- 글또
- weekly calendar
- Git
- 회고
- MyLife
- AnyObject
- 다짐글
Archives
- Today
- Total
seong_hye, the developer
Swift) 문법 정리 - self vs Self 본문
자기자신을 가르키는 것으로 알고 있는 self가
소문자인지 대문자인지에 따라 의미와 목적이 다르다고 한다.
그 내용에 대해 정리해보려 한다.
self
인스턴스를 가르킴
모든 인스턴스들이 암시적으로 생성하는 속성
사용 목적
1) 인스턴스 내부에서 인스턴스의 속성을 더 명확하게 가르키기 위해 사용
class Person {
var name: String
init(name: String) {
self.name = name
}
}
2) 값타입에서 인스턴스 자체의 값을 치환할 때 사용 가능 (클래스에서는 사용불가)
struct Calculator {
var number: Int = 0
mutating func plusNumber(_ num: Int) {
number = number + num
}
// 값 타입(구조체, 열거형)에서 인스턴스 값 자체를 치환 가능
mutating func reset() {
self = Calculator() // 값 타입은 새로 생성해서 치환하는 것도 가능
}
}
3) 타입속성 / 메서드에서 사용하면, 타입자체를 가르킴
struct MyStruct {
static let club = "iOS부서"
static func doPrinting() {
print("소속은 \(self.club)입니다.")
}
}
4) 타입 인스턴스를 가르킬 때, 타입 자체의 뒤에 붙여서 사용 (타입 자체를 외부에서)
class SomeClass {
static let name = "SomeClass"
}
let myClass: SomeClass.Type = SomeClass.self
SomeClass.name
SomeClass.self.name
Int.max
Int.self.max
Self
타입을 가르킴
Self가 특정한 타입을 가르키는 것은 아니고,
특정 타입 내부에서 사용하여 해당 타입을 가르킴
사용 목적
1) 특정 타입 내부에서 타입을 선언하는 위치에서 사용
extension Int {
// 타입 저장 속성
static let zero: Self = 0 // Int 타입
}
2) 특정 타입 내부에서 타입 속성 / 타입 메서드를 지칭하는 위치에서 타입 대신 사용
extension Int {
// 타입 저장 속성
static let zero: Self = 0 // Int 타입
// 2) 타입 속성/메서드에서 지칭
static func toZero() -> Self {
return Self.zero // Int.zero
}
}
3) 프로토콜에서 채택하려는 타입을 지칭 가능
extension BinaryInteger {
func squared() -> Self { // 타입자체(Int)를 가르킴
return self * self // 인스턴스(7)를 가르킴
}
}
참고자료)
'IOS' 카테고리의 다른 글
Swift) 문법 정리 - COW(Copy-On-Write) (0) | 2022.08.02 |
---|---|
Swift) 문법 정리 - 싱글톤(Singleton) 패턴 (0) | 2022.07.26 |
Swift) 화면전환 방식 (0) | 2022.07.19 |
[ios 개발 강의] Swift - UINavigationController (0) | 2022.07.19 |
Swift) Alert vs Action Sheet (0) | 2022.07.19 |
Comments