我试图围绕 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
是两个程序中的指针,为什么这些表达式不同?谁能帮我澄清一下?