2013-03-29 3 views
0

실수로 실수를 저질렀 는데도 여전히 작동하는 것으로 나타났습니다. 나는 그것을 단순히 여기에서 재현 해 보여 주었다. 내가 사용했던 속성을 무시하고 값을 할당하고 있습니다.사이의 간격. 속성 이름이 작동합니까?

self.view. frame = CGRectZero; 
self.view. tag = 23; 

NSLog(@"%@",NSStringFromCGRect(self.view.frame)); 
NSLog(@"%i",self.view.tag); 

컴파일러가이를 어떻게 알았습니까?

답변

4

C와 Objective-C에서 토큰 사이의 공백이 중요하지 않기 때문에. 소스 텍스트를 구문 분석 할 때 컴파일러는 lexer을 반복적으로 호출합니다 (소스 코드를 나타내려면 builds an abstract data structure). 렉서 기능 (일부 deviances가 있지만, 이러한 관찰은 일반적으로 진정한 경향이있다) 공백이 아닌 토큰에만 관심이 있으며, 그러나 당신은 당신의 코드를 구성

object.member 

object .member 

object. member 

object . member 

은 모두 동일한 순서의 토큰으로 인식됩니다 (<ident> <memberof> <ident>).

+0

몇 초 안에 많은 것을 입력 해주세요 :) –

+1

@AnoopVaidya 자, 잠시 후입니다. –

+0

해답을 찾아 주셔서 감사합니다. – Saran