본문 바로가기
iOS/Objective-C

arrow notation (`->`)

by 패쓰킴 2021. 11. 16.
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://www.quora.com/Objective-C-programming-language-What-is-the-difference-between-%E2%80%9C-%E2%80%9D-and-%E2%80%9C-%E2%80%9D-operator

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

댓글