728x90
https://ios-development.tistory.com/393
[iOS - swift] == 와 === 의 차이 (+ Equtable)
`==` vs `===` a == b: a의 값과 b의 value가 같은지 비교 let value1 = 1 let value2 = 2 print(value1 == value2) // false a === b: a가 참조하고 있는 인스턴스와 b가 참조하고 있는 인스턴스가 같은지 비교 swift에서는 크
ios-development.tistory.com
== vs ===
- ==
- 각 변수의 Value를 비교한다.
- Stack 영역의 값을 비교
- Equatable을 채택해서 static func ==() method를 선언하면 사용할 수 있다.
- ===
- 각 변수가 참조하고 있는 instance를 비교한다
- Heap 영역의 값을 비교
- 때문에 reference type인 변수들이 같은 instance를 참조하고 있는지 직접 비교가 가능하다.
== 사용 예시
let a: Int = 1
let b: Int = 2
print(a == b)
// false
class Test: Equatable {
static func == (lhs: Test, rhs: Test) -> Bool {
return lhs.value == rhs.value
}
let value: Int
init(value: Int) {
self.value = value
}
}
let c = Test(value: 1)
let d = Test(value: 1)
print(c == d)
// true
=== 사용 예시
class Test: Equatable {
static func == (lhs: Test, rhs: Test) -> Bool {
return lhs.value == rhs.value
}
let value: Int
init(value: Int) {
self.value = value
}
}
let a = Test(value: 1)
let b = Test(value: 1)
let c = Test(value: 2)
let d = c
print(a == b)
// true -> 같은 value를 가짐
print(a === b)
// false -> 같은 instance를 참조하고 있지 않음
print(c === d)
// true -> 같은 instance를 참조함
728x90
'iOS > 설명' 카테고리의 다른 글
[iOS] RunLoop (0) | 2024.11.10 |
---|---|
[iOS] OOP와 POP는 어떤 경우에 써야 할까 (고찰) (0) | 2024.03.17 |
[iOS] High performance based drawing (0) | 2024.02.24 |
[iOS] Mirror Struct (0) | 2024.02.24 |
[iOS] iOS Webview에서 텍스트 복사하는법 (0) | 2023.07.15 |
댓글