返回错误变量的方法

时间:2010-04-09 17:27:09

标签: objective-c cocoa

我正在使用的这个类有三个我感兴趣的实例变量,NSmutablearrays xArray yArray和zArray,还有其他NSmutablearrays,a,bArray和c。 我刚刚添加了访问者

- (NSMutableArray *) xArray {
   return xArray;
}

同样适用于y和z。 但是,由于某种原因,它正在返回yArray,zArray和bArray。 为什么会这样?


好的,我只是将方法的名称更改为GetXArray,所有内容似乎都返回了正确的变量。现在我真的很困惑。这是怎么回事?我如何防止将来发生这种情况?

1 个答案:

答案 0 :(得分:0)

这是相当简单的设置/获取内容:

<强> XYZArray.h

#import <Cocoa/Cocoa.h>
@interface XYZArray : NSObject {
  NSMutableArray *x;
  NSMutableArray *y;
  NSMutableArray *z;
}

-(NSMutableArray*) x;
-(NSMutableArray*) y;
-(NSMutableArray*) z;

-(void) setX:(NSMutableArray*)newArray;
-(void) setY:(NSMutableArray*)newArray;
-(void) setZ:(NSMutableArray*)newArray;
@end

<强> XYZArray.m

#import "XYZArray.h"
@implementation XYZArray
- (id)init
{
    if((self = [super init]))
    {
      x = [[NSMutableArray alloc] init];
      y = [[NSMutableArray alloc] init];  
      z = [[NSMutableArray alloc] init];  
    }
    return self;
}

- (void) dealloc
{
  [x release];
  [y release];
  [z release];
  [super dealloc];
}


-(NSMutableArray*) x
{
  return x;
}

-(NSMutableArray*) y
{
  return y;
}

-(NSMutableArray*) z
{
  return z;
}

-(void) setX:(NSMutableArray*)newArray
{
  [newArray retain];
  [x release];
  x = newArray;
}

-(void) setY:(NSMutableArray*)newArray
{
  [newArray retain];
  [y release];
  y = newArray;
}

-(void) setZ:(NSMutableArray*)newArray
{
  [newArray retain];
  [z release];
  z = newArray;
}
@end

更好的是,如果您使用的是Objective-C 2.0,您可以使用属性执行所有这些操作,而不是编写任何代码。请阅读此内容,了解http://macdevelopertips.com/objective-c/objective-c-properties-setters-and-dot-syntax.html