2010-04-09 5 views
1

이 클래스는 NSmutablearrays xArray yArray와 zArray에 관심이있는 세 개의 인스턴스 변수가 있습니다. 다른 NSmutablearrays, a, bArray 및 c도 있습니다. I는 접근메서드가 잘못된 변수를 반환합니다

- (NSMutableArray *) xArray { 
    return xArray; 
} 

Y 및 Z에 대한 동을 첨가. 그러나 yArray, zArray 및 bArray가 어떤 이유로 반환됩니다. 그 이유는 무엇입니까?


좋아, 방금 GetXArray 메서드의 이름을 변경하고 모든 것이 올바른 변수를 반환하는 것 같습니다. 지금 나는 정말로 혼란 스럽다. 도대체 어떻게 이런 일이 있었고, 앞으로 어떻게되지 않을까?

+1

우리는 무슨 일이 일어나고 있는지 말할 수있는 더 많은 코드가 필요합니다. 위에 표시된 접근 자 메서드는 완벽하게 유효합니다. 이 변수들은 어떻게 설정하고 있습니까? –

+0

모든 배열은 헤더에서 한 줄로 선언됩니다. NSMutableArray \t * aArray, * bArray, * xArray, * yArray, * zArray; 클래스를 시작할 때 파일에서 한 번에 한 줄씩 읽은 다음 각 값을 배열에 추가하는 메서드를 호출합니다. [xArray addObject : [NSNumber numberWithFloat : x]]; 파일 읽기 문제가 아닙니다. NSLog (@ "objects : % @ % @ % @", xArray, yArray. zArray)를 수행하면 올바른 배열이 인쇄되었습니다. 그러나 xArray 메서드는 호출 될 때 yArray를 반환했습니다. 메서드의 이름을 GetxArray로 변경하면 상황이 다시 정상적으로 처리됩니다. – cocoanewbie

+0

그건 말이되지 않습니다. 당신은 구축하고 분석 했습니까? – bbum

답변

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 

더 나은 아직, 당신이 사용하는 경우 목표 -C 2.0에서는 속성을 사용하여이 모든 작업을 수행 할 수 있으며 코드를 전혀 작성하지 않습니다. 소개를 보려면 http://macdevelopertips.com/objective-c/objective-c-properties-setters-and-dot-syntax.html을 읽어보십시오.

관련 문제