반응형
LinkedIn
개발자로 성장하면서 남긴 발자취들을 확인하실 수 있습니다.
Github
WWDC Student Challenge 및 Cherish, Tiramisul 등 개발한 앱들의 코드를 확인하실 수 있습니다.
개인 앱 : Cherish
내 마음을 들여다보는 시간, 체리시는 디자이너와 PM과 함께 진행 중인 1인 개발 프로젝트입니다.
10년 후, 20년 후 나는 어떤 스토리 텔러가 되어 있을지 궁금하다. 내가 만약에 아직 조금 더 탐구하고 싶은 게 있고, 궁금한 게 있다면, 그게 설사 지금 당장의 내 인생에 도움이 안 되는 것 같더라도 경험해보자. 그 경험들을 온전히 즐기며 내 것으로 만들고, 내 일에 녹여내고... 그러다보면 그 점들이 모여 나란 사람을 그려내는 선이 될 테니까.
Recent Posts
Recent Comments
- Total
꿈꾸는리버리
Class 안의 Struct와 Struct 안의 Class ! 본문
반응형
Class와 Struct에 대해서 공부하다보니까 궁금한게 생겼다..
관련 블로그 링크 : struct와 class의 차이 / Copy On Write와 Copy On Assign
질문
Class의 property로 있는 Struct은 Class의 인스턴스를 만들고 복사한 후 값을 변경하면 달라질까?
반대로 Struct의 propert로 있는 Class는 Struct의 인스턴스를 만들고 값을 복사한 후 값을 변경하면 달라질까?
말로하면 어려우니 코드를 보자.. ㅎㅎ
1) 이렇게 하면 class1.structInstance.number와 class1_Copy.structInstance.number는 값이 같을까?
struct Struct1 {
var number = 2
}
class Class1 {
var number = 1
var structInstance = Struct1()
}
let class1 = Class1()
let class1_Copy = class1
class1_Copy.structInstance.number = 0
직접 해보니까 값이 같았다.
print(class1.structInstance.number) // 2
print(class1_Copy.structInstance.number) // 2
class1_Copy.structInstance.number = 0
print(class1.structInstance.number) // 0
print(class1_Copy.structInstance.number) // 0
이건 그림으로 그려보면
그래서 주소값도 똑같이 나온다 !
withUnsafePointer(to: &class1.structInstance.number) {
print("\($0)") // 0x0000600000309c78
}
withUnsafePointer(to: &class1_Copy.structInstance.number) {
print("\($0)") // 0x0000600000309c78
}
2) 반대로 이렇게 하면 struct2.classInstance.number와 struct2_Copy.classInstance.number는 값이 같을까?
class Class2 {
var number = 2
}
struct Struct2 {
var number = 1
var classInstance = Class2()
}
let struct2 = Struct2()
var struct2_Copy = struct2
struct2_Copy.classInstance.number = 0
이것도... 값이 같았다..
print(struct2.classInstance.number)
print(struct2_Copy.classInstance.number)
struct2_Copy.classInstance.number = 0
print(struct2.classInstance.number)
print(struct2_Copy.classInstance.number)
그림을 그려보면
그래서 주소값도 똑같이 나온다 !
withUnsafePointer(to: &struct2.classInstance.number) {
print("\($0)") // 0x00006000003199b0)
}
withUnsafePointer(to: &struct2_Copy.classInstance.number) {
print("\($0)") // 0x00006000003199b0)
}
느낀점
생각했던 거랑 좀 달랐어서 신기했다 ! 이전 프로젝트에서 골머리를 앓았던 적이 있었는데 이유를 모르고 넘어갔던 부분을 이렇게 발견할 수 있게 되어서 넘 기쁘다.. 🥹 성장의 즐거움이란... 😆
반응형
'오뚝이 개발자 > swift' 카테고리의 다른 글
protocol 정복기 ( 2/ 3) (0) | 2022.07.24 |
---|---|
protocol 정복기 ( 1 / 3) (0) | 2022.07.24 |
Copy On Write(COW)는 어떤 방식으로 동작하는지 설명하시오. (2) | 2022.07.14 |
Xcode SwiftLint 적용하기 (0) | 2022.07.11 |
assert(_:_:file:line:) (0) | 2022.07.10 |
Comments