728x90
참고 사이트에서 필요한 부분 번역한 내용입니다.
Objective-C 에서는 어떤 class 또는 struct의 프로퍼티에 값을 대입할 때 self.담길 곳 = 넣을 값
의 형식을 사용할 때 주의 오류로 self.
대신 self ->
를 사용하게끔 fix 해준다.
"."의 사용은 항상 실제 메서드 호출을 수행한다. 속성이 "retain" 또는 "copy" 속성인 경우, getter / setter를 사용하면 올바른 메모리 관리를 수행할 수 있지만, 인스턴스 변수에 직접 액세스할 경우 MRC(수동 참조 카운트)에서 메모리 관리를 직접 처리해야 한다.
요약하자면, "."는 Objective-C에서 두 가지 용도로 사용된다.
- 왼쪽에 struct 타입이 있는 경우 struct의 필드에 액세스합니다.
- 왼쪽에 객체에 대한 포인터 유형이 있으면 속성에 액세스합니다.
그리고 "->"는 Objective-C에서 두 가지 용도가 있다.
- 왼쪽에 struct 포인터 유형이 있는 경우 struct의 필드에 액세스합니다.
- 왼쪽에 객체에 대한 포인터 유형이 있으면 객체의 인스턴스(instance) 변수에 액세스합니다.
self->some var
의 사용은 some var
와 동일하다.
화살표 표기법을 사용하는 이유 중 하나는 copyWithZone:
의 구현이다. 그래서 속성이 없는 각 some var를 복사할 수 있다.
SomeClass *someCopy = ...
someCopy->ivar1 = ivar1; // = self->ivar1
someCopy->ivar2 = ivar2; // = self->ivar2
참고>>
https://coderedirect.com/questions/117871/dot-operator-and-arrow-operator-use-in-c-vs-objective-c
728x90
'iOS > Objective-C' 카테고리의 다른 글
cornerRadius 원하는 부분에만 적용 (0) | 2021.12.15 |
---|---|
Push Notification (0) | 2021.12.06 |
_myView vs. self.myView (0) | 2021.11.17 |
isEqual vs. == (0) | 2021.11.11 |
Text 설정 (0) | 2021.11.05 |
댓글