我试图了解Apple指南中的Referring to Instance Variables,但是对于这个问题的理解,Apple Doc说
...当实例变量属于不是接收者的对象时,必须通过静态类型将对象的类型显式给编译器。在引用静态类型对象的实例变量时,使用结构指针运算符( - >)。 例如,假设Sibling类声明一个静态类型对象twin,作为实例变量:
@interface Sibling : NSObject
{
Sibling *twin;
int gender;
struct features *appearance;
}
只要静态类型对象的实例变量在类的范围内(因为它们在这里因为twin被键入同一个类),所以Sibling方法可以直接设置它们:
- makeIdenticalTwin
{
if ( !twin )
{
twin = [[Sibling alloc] init];
twin->gender = gender;
twin->appearance = appearance;
}
return twin;
}
答案 0 :(得分:1)
引用实例变量意味着,访问类实例变量
例如:
@interface ClassA : NSObject
{
int value;
}
- (void) setValue:(int) val;
@implementation ClassA
- (void) setValue:(int) val
{
//here you could access class a value variable like this
value = val;
}
现在访问其他类变量 以此类为例
@interface ClassB : ClassA
{
ClassA aClass;
}
- (void) setValueInAClass:(int) val;
@implementation ClassB
- (void) setValueInAClass:(int) val
{
//class b could access variables from class a like this
aClass->value = val;
}
请注意,建议不要这样做,使用“ - >”打破了类a的封装,因此在使用“ - >”引用类变量的99%的情况下都没有是一个错误