좋아, 혼란스러워! 내가 사용하는 데 사용 -> 내 인스턴스 객체에 액세스 할 때마다,하지만 지금 난 내 응용 프로그램을 설정 한 후 볼이 같은 didFinishLaunching : 나는 예외와 함께 밖으로 던져있어 도로 아래로'.'의 차이점은 무엇입니까? 및 '->'iOS?
self->counter = [NSNumber numberWithFloat:0.0f];
, 확인 내 디버거와 내가에 라인을 변경하는 카운터가 <non objective c object>
를 가리키는했다 보았다
self.counter = [NSNumber numberWithFloat:0.0f];
그리고 지금 내가 네 또 다른 변수가 디버거에서 참조하십시오.
여기에 무슨 일이 일어나고 있습니까?
이 정답에 추가하려면 'self-> counter'형식은 인스턴스 메소드 범위에서 중복 될뿐만 아니라 ivar이 표시되지 않는 한 해당 범위 밖에서 경고 (또는 오류)가 발생합니다 (기이하게 ...)'@ public' – FluffulousChimp
@NSBum Right +1, ObjC에서는 액세스가 일관되지 않고 복잡합니다. 최신 ABI 용으로 작성하는 경우 액세스가 올바르게 검사됩니다. 오래된 ABI 또는 컴파일러는 대신 경고를 내 보냅니다. '@ implementation' 블록에서 선언 될 때 기본값으로'@interface'와'@ private'에 선언되어 있다면 디폴트로'@ protected'됩니다. clang은 또한'@ implementation' 본문 (예 : 정적 함수를 사용하는 경우)에서 비공개에 대한 액세스를 허용합니다 - 예상대로 '@ 구현'본문 외부의 오류입니다 O_O – justin