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