약한 참조를 할 경우 self에 ?를 붙여야 하는 이유?
405
작성한 질문수 4
수고많으십니다.
closure_3 강의에서,
lazy var myClosure2 = {[weak self] in
print(self?.b ?? 0)
}
여기서 self뒤에 ?가 붙는 이유는 뭔가요? ?의 의미를 죄송하지만 여기서 한번 더 설명해주실 수 있으실까요?
myClass?.b = 11
myClass?.b
여기서 제가 중간에 놓친 설명이 있는 것 같기도 하고요. optional 인 Myclass를 unwrapping 하려면 !를 붙이는게 맞지 않나요? 그리고 myClass!.b로 실행해봐도 문제는 없는것 같구요. ?의 의미 한번 더 정리해주실 수 있으실까요.
답변 2
0
다른 부분은 일차적인 이해는 한 것 같습니다.
그런데 class 타입의 someClass를 myClosure2 가 self라는 이름의 옵셔널 타입으로 캡쳐한다는 것에서
var myClass : someClass? = someClass()
의 myClass와 self가 같은 것이라고 해석하는게 맞을까요?
0
backtick이라고 부르고 이미 있는 같은이름으로 된 이름을 만들고 싶을때나 원래 변수명으로 못 만드는 단어를 변수명으로 만들고 싶을때 씁니다.
self가 이미 있으니 그냥은 못 만들어서 백틱으로 감싸야 self를 만들수 있습니다.
swift언어 스펙이며 키보드 ₩ 누르면 나오는 기호입니다.
0
안녕하세요
weak는 약하게 참조한다는 의미이고 약한참조 한다는 것은 몇가지 의미가 있는데 그 중 하나가 언제든지 nil이 될 수 있는 옵셔널 타입을 뜻합니다.
클로저에서 [weak self]는 캡쳐리스트라고 해서 self와 같은 이름으로 해당타입을 옵셔널 타입으로 캡쳐하고 있다는 뜻입니다.
옵셔널타입의 멤버 접근시 물음표가 나오는건 옵셔널 체이닝이 가능한 상태를 말합니다.
이건 물음표 붙은 self가 nil일 경우 하위 멤버에 접근하지 않고 안전하게 nil을 반환한다는 뜻입니다.
언래핑 방법은 여러가지가 있고 그 중 하나가 !를 사용하는 것입니다.
하위 멤버에 접근만 할경우는 언래핑은 필요 없습니다. 따라서 !를 줄 이유는 없습니다.
언래핑이 필요한 경우는 만약 self 자체를 어딘가 넘겨줄 때 받는 쪽에서 옵셔널이 아닌 타입이라고 한다면 언래핑을 해서 옵셔널이 아닌 타입으로 넘겨줘야 겠죠.
옵셔널쪽과 클로저쪽 강의에서 설명을 하고 있긴 하지만 처음엔 이해가 쉽게 안될수 있는 부분이긴 합니다.
이해가 잘 안되는 부분은 다시 질문주시면 답변 드리겠습니다.
패싱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





