向Apple指南发出“参考实例变量”的理解

时间:2012-06-08 14:19:44

标签: objective-c ios

我试图了解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; 
}

1 个答案:

答案 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%的情况下都没有是一个错误