帮我理解这里发生了什么?类/对象

时间:2011-09-28 18:12:30

标签: objective-c

我是初学者,我写了这段代码:

#import <Foundation/Foundation.h>

@interface XYPoint : NSObject {

int pointX;
int pointY;

}    

- (void) print;
- (void) setX: (int) x; 
- (void) setY: (int) y; 

@end

@implementation XYPoint

-(void) print {

NSLog(@"X is %i and Y is %i", pointX, pointY);

}

-(void) setX: (int) x {
pointX = x;
}

-(void) setY: (int) y {
pointY = y;
}

@end

int main (int argc, const char * argv[])
{

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

XYPoint *myCord = [[XYPoint alloc] init];

[myCord setX: 4];
[myCord setY: 6];

[myCord print];

[myCord release];


[pool drain];
return 0;
}

我需要帮助的是我不能为我的生活理解“pointX”与setX和“x”之间的关系

1 个答案:

答案 0 :(得分:1)

PointX被称为实例变量 - 这在大多数其他语言中称为私有类级变量。它表示您的类需要在内部存储的一条信息,默认情况下不会暴露给系统中的其他对象。

setX是您显式创建的方法,允许其他对象将值分配给私有PointX实例变量。 x是外部调用对象传递给setX方法的参数。

请注意,公开对私有实例变量的访问的最常用方法是使用已定义的属性。在您的情况下,您可以在界面中添加类似的内容:

@property (nonatomic) int PointX;

然后在您的实现中:

@synthesize PointX;

此语法允许您(有效地)直接访问PointX实例变量,方法是自动创建具有相同名称的包装器属性(使用匹配的-get和-set方法)。