inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]

35. property_2

willSet, didSet 질문

333

민정

작성한 질문수 3

0

35강에서 willSet, didSet 관련하여 질문 드립니다.

class ClassA {

var a = 0

}

class ClassB {

var b = ClassA() {

willSet {

print(newValue)

}

didSet {

print(oldValue)

}

}

}

class는 레퍼런스 타입이라서 classB.b.a = 100이 안되고, struct는 된다고 하셨는데, 강의를 여러 번 들어도 이해가 가지 않아 질문 드립니다.

혹시 더 자세하게 설명해주실 수 있을까요?

swift ios 동시성 동시성

답변 1

0

iOS Developer - 이정

안녕하세요

 

레퍼런스 타입이라는건 생성할 때 그 생성된 객체 자체를 갖고있게 하지 않습니다.

다시말해 레퍼런스 타입으로 변수를 만든다는건 메모리 어딘가(힙영역)에 객체를 만들어 놓고 그 객체 원본이 있는 메모리 주소만 변수에 알려주는 것입니다.

 

var b = ClassA()

즉 이렇게 만들어진 변수 b는 ClassA가 만들어진 객체의 주소정보만 갖고 있게 되는거죠

이 상태를 참조한다고 표현합니다.

 

그러므로 ClassA안에 정보가 변경되도 변수 b는 변경되는게 전혀 없게됩니다.

변수 b는 객체 원본의 주소정보만 갖고 있기 때문이죠.

그러므로 변수 입장에서는 아무런 변경이 없기 때문에 property observer가 호출되지 않는 것입니다.

 

반대로 struct같은 value 타입은 변수로 생성할 때 그 객체 자체 정보를 갖고 있습니다.

var c = StructA()

이렇게 struct타입으로 만들었다고 한다면 변수 c는 StructA의 모든 객체 정보를 담고 있습니다.

 

이 차이가 property observer가 동작되고 안되고 차이를 만들게 됩니다.

 

패싱1강에서 강의중에 질문 있습니다.

0

73

2

table view 없음

0

101

2

에러 질문 [UITextField setDataSource:]: unrecognized selector sent to instance 0x107079600"

0

205

2

Main interface 지정 방법

0

169

1

Closure_3 Capture List에 참조 타입 값을 작성할 경우에도 deinit 실행되는 이유가 뭘까요?

0

171

2

TodoCell UIview 생성 후 연결 시 오류

0

416

2

테이블 뷰 데이터 업데이트 관련 질문

0

346

2

TODO List Coredata 질문입니다.

0

343

1

혹시 추가예정인 강의가 대략 언제쯤 나오는지 알수있을까요..?

0

359

1

swift에서 import 헤더를 안해도 되는이유가 궁금합니다.

1

624

1

closure 3 에서 weak로 준 부분이 궁금합니다.

0

320

1

concurrency_1 강의 코드 결과 중 이해가 안가는 부분이 있습니다

0

332

1

self.navigationBar.topItem?.leftBarButtonItem을 해도 button이 보이지 않습니다

0

593

2

func 기능을 쓸때 self. 을 왜쓰는지 이해가 잘안되네요 ㅠㅠ

0

412

1

Closure2 강의에서 예문처럼 똑같이 myfunc2, myfunc3 만들었을때

0

375

1

클론강의 tableViewCell

0

405

1

Location.pin강의에서 self질문이요

1

254

1

넷플릭스 table cell 관련해서 질문이 있습니다.

0

505

1

Capturing Valus

0

295

1

안녕하세요 todolist강의중에서 UI구성중 xib파일 오토레이아웃질문입니다.

0

314

1

환율 강의 테이블뷰에서 데이터 관련 질문있습니다.

0

554

2

환율 네트워크처리1 질문있습니다.

0

275

1

변수 let 위치 질문입니다.

0

369

1

섹션 9 영상 잘림 확인 부탁드립니다

0

336

1