Использование оператора точки («.») И стрелки («->») в C по сравнению с Objective-C

Я пытаюсь обдумать некоторые различия в использовании и синтаксисе в 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 свойство числитель доступно с помощью frac-> numerator , но в Objective-C доступ к нему осуществляется с помощью оператора точки с frac.numerator. . Поскольку frac является указателем в обеих программах, почему эти выражения отличаются? Может ли кто-нибудь помочь мне прояснить это?

61
задан icodebuster 26 August 2013 в 06:18
поделиться