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