C と Objective-C の使用法と構文の違いのいくつかに頭を悩ませようとしています。特に、C と Objective-C でドット演算子とアロー演算子の使用法がどのように (そしてなぜ) 異なるのかを知りたいです。簡単な例を次に示します。
C コード:
// declare a pointer to a Fraction
struct Fraction *frac;
...
// reference an 'instance' variable
int n = (*frac).numerator; // these two expressions
int n = frac->numerator; // are equivalent
Objective-C コード:
// declare a pointer to a Fraction
Fraction *frac = [[Fraction alloc] init];
...
// reference an instance variable
int n = frac.numerator; // why isn't this (*frac).numerator or frac->numerator??
では、両方のプログラムでどのようfrac
に同じであるか (つまり、Fraction オブジェクトまたは構造体へのポインターである) を見て、プロパティにアクセスするときに異なる構文を使用するのはなぜでしょうか? 特に、C では でnumerator
プロパティにアクセスしますfrac->numerator
が、Objective-C では でドット演算子を使用してアクセスしますfrac.numerator
。は両方のプログラムでポインターであるためfrac
、これらの式が異なるのはなぜですか? 誰でも私のためにこれを明確にするのを助けることができますか?