偶然の間違いを犯しましたが、まだ機能していることに気付きました。デモ用に、ここのビューで単純に再作成しました。使用したプロパティと割り当てている値を無視します。
self.view. frame = CGRectZero;
self.view. tag = 23;
NSLog(@"%@",NSStringFromCGRect(self.view.frame));
NSLog(@"%i",self.view.tag);
コンパイラはこれをどのように認識し、それで問題ありませんか?
偶然の間違いを犯しましたが、まだ機能していることに気付きました。デモ用に、ここのビューで単純に再作成しました。使用したプロパティと割り当てている値を無視します。
self.view. frame = CGRectZero;
self.view. tag = 23;
NSLog(@"%@",NSStringFromCGRect(self.view.frame));
NSLog(@"%i",self.view.tag);
コンパイラはこれをどのように認識し、それで問題ありませんか?
C と Objective-C では、トークン間の空白は問題にならないためです。ソース テキストを解析するとき、コンパイラはレクサーを繰り返し呼び出します (そして、ソース コードを表す抽象データ構造を構築します)。レクサー関数は、空白以外のトークンにのみ関心があります (いくつかの逸脱がありますが、この観察は一般的に正しい傾向があります)。コードをどのように編成しても、
object.member
と
object .member
と
object. member
と
object . member
はすべて、まったく同じ一連のトークンとして認識されます: <ident> <memberof> <ident>
.