티스토리 뷰
728x90
반응형
- Struct를 사용하는 경우
1. 두 object를 "같다, 다르다"로 비교해야하는 경우
let point1 = Point(x: 3, y: 5)
let point2 = Point(x: 3, y: 5)
if point1 == porint2 {
// x: 3, y: 5 이므로 같다
}
두 변수는 서로 다른 객체이지만, 서로 같은 데이터를 가지고 있다.
이때, 두 변수를 비교하는 상황이 오면 struct를 쓰는게 좋다.
2. copy된 각 객체들이 독립적인 상태를 가져야 하는 경우
var myMac = Mac(owner: "K")
var yourMac = myMac
yourMac.owner = "H"
myMac.owner // "K"
yourMac.owner // "H"
객체를 카피한 후에, 독립적으로 데이터관리가 들어가는 경우 struct를 쓰는게 좋다.
3. 코드에서 오브젝트의 데이터를 여러 스레드에 걸쳐 사용하는 경우
객체 하나에 여러개의 스레드가 접근하면, 잠재적인 위험이 있다. (전역변수를 되도록 쓰지 않는이유와 같다고 생각하면 될듯)
이러한 경우에는 각각의 스레드의 변화로 전체가 변하지 않는, value타입을 가지는 structure를 쓰는게 좋다.
- Class를 사용하는 경우
1. 두 object의 인스턴스 자체가 같음을 확인해야 할 때
let point1 = Point(x: 3, y: 5)
let point2 = Point(x: 3, y: 5)
if point1 == porint2 {
// Point객체 이므로 같다
}
객체의 데이터가 같은지의 비교가 아닌, 객체 자체가 같은지를 비교할 때 class를 쓰는 것이 좋다.
2. 하나의 객체가 필요하고, 여러 대상에 의해 접근되고 변경이 필요한 경우
=> 일단 왠만한 object는 struct로 쓰자. (https://developer.apple.com/swift/blog/?id=10)
* stack overflow보다는 애플 공식문서를 먼저 보는 습관을 가지자!
728x90
반응형
'Swift' 카테고리의 다른 글
Initializer (0) | 2021.01.02 |
---|---|
Inheritance (0) | 2021.01.02 |
Class (0) | 2020.12.28 |
Method (0) | 2020.12.21 |
Property vs Method (0) | 2020.12.21 |