2012-02-12 4 views
0

내가 if else 비교 대상에서 BOOL를 사용하려고하고 있었고, 난 내가 왜 객체의 점 표기법을 사용할 수 없습니다목표 C 객체 속성 ->

player->isUp를 사용 제안 player.isUp을 쓸 때 내가 경고를 받았습니다 BOOL? 그리고 ->은 무엇을 의미합니까 ??

+0

도트 표기법을 BOOL과 함께 사용할 수 있습니다. 이 BOOL이 선언되고 사용 된 코드를 게시하십시오. – Rayfleck

답변

3

도트 표기법을 사용하려면 isUp을 객체가 속한 클래스의 속성으로 정의해야합니다. 화살표는 구조체 포인터에서 값에 액세스하기위한 표준 C 구문입니다.

+1

또한'->'는 iVar에 접근하기위한 objc 문법이다. –

+0

실제로 objc에서 특별한 의미가 있습니까? 아니면 내부적으로 구조체의 멤버로 표현되는 ivar입니까? – UIAdam

+0

@UIAdam, Objective-C 객체는 실제로는 구조체이므로 ObjC만의 특이한 것은 아닙니다. 단지 Objective-C에서 유효한 표준 C 표기법입니다. –

3

개체 BOOL에 점 표기법을 사용할 수없는 이유는 무엇입니까?

속성이 선언되어 있으면 제공 할 수 있습니다.

그리고 -> 의미는 무엇입니까 ??

이것은 getter/setter를 사용하지 않고 objc 메시징을 사용하지 않고 ivar에 대한 직접 멤버 액세스입니다. 이 경우 object->ivar 일 경우 objectnil 인 경우 EXC_BAD_ACCESS이 표시 될 수 있습니다.