0

Apple Doc 说,我试图从 Apple 指南中了解引用实例变量,但在研究这一点时遇到问题

...当实例变量属于不是接收者的对象时,该对象的类型必须通过静态类型对编译器明确。在引用静态类型对象的实例变量时,使用结构指针运算符 (->)。例如,假设 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; 
}
4

1 回答 1

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% 的情况下使用“->”引用类变量是错误的

于 2012-06-08T14:47:03.750 回答