2009-12-30 3 views
0

나는 곧바로 될 것이라고 생각했던 것에 어려움을 겪고있다. 클래스 개체 배열을 만들려고하지만 다른 문제가 발생합니다. 목표는 다른 클래스의 객체 배열을 포함하는 하나의 클래스를 만드는 것이 었습니다.@ 클래스 객체의 배열을 합성 하시겠습니까?

어떤 도움을 주시면 감사 : 읽기에서

// Basic class unit 
@interface MobRec : NSObject { 
    NSString *MName; 
    int Speed; 
} 

@end 


// Master Class holding an array of units 
@interface MobDefs : NSObject { 
    MobRec *MobInfo; 
} 

@property(retain) MobRec *MobInfo; 

@end 


@synthesize MobInfo; 

1) 내가 만들어야 보이고있는 NSMutableArray하지만 어떻게 당신이 사용자 정의 클래스 객체의 NSMutableArray를 선언합니까? 모든 반복을 시도하면 오류가 발생합니다. 이전에는 클래스의 크기를 MobInfo [20]로 미리 정의했습니다. 그러나 didnt는 무엇이라도 이익이되는 것처럼 보인다.

2) 어떻게 클래스 개체의 배열을 올바르게 @ 합성합니까?

+2

Objective-C 명명 규칙을 따르는 것이 좋습니다. 수업은 대문자로 표기됩니다. 메서드와 속성은 소문자의 첫 글자를가집니다. 그러면 'MobRec * mobInfo'가됩니다. – Chuck

답변

2

NSMutableArray는 사용자가 추가 (또는 읽기) 할 때 유형 검사를하지 않으므로 원하는 모든 객체를 추가 할 수 있습니다. 나는 그것의 사용 방법을 볼 수 있습니다뿐만 아니라 배열에 추가하기위한 기본 사항을 포함 시켰습니다

// MobRec Class 
@interface MobRec : NSObject { 
    NSString *mName; 
    int speed; 
} 

@property(retain)NSString *name; 
@property(assign)int speed; 

@end 

@implementation MobRec 

@synthesize mName, speed; 

@end 


// MobDefs Class 
#import "MobRec.h" 
@interface MobDefs : NSObject { 
    NSMutableArray *mobInfo; 
} 

@property(retain) NSMutableArray *mobInfo; 

@end 


@implementation MobDefs 

@synthesize mobInfo; 

- (id)init { 
    mobInfo = [[NSMutableArray alloc] init]; 
    MobRec *aNewMobRec = [[MobRec alloc] init]; 
    [mobInfo addObject:aNewMobRec]; 
    [aNewMobRec release]; 
} 

: 내가 좋아하는 뭔가를 줄이 경우

. 오, 그리고 dealloc 메서드에서 MobInfo를 릴리스해야한다는 것을 잊지 마십시오.

하지만 대부분은 NSMutableArray입니다.

+0

이것은 내가 무엇을 찾고 있었는지입니다! 고맙습니다. Couldnt는 NSMutableArray가 타입 검사를 필요로하지 않는다고 말하는 간단한 구문을 다른 곳에서는 찾지 못했습니다. 이것은 내 문제를 해결하는 데 도움이됩니다. – user240272

+0

추 신 : 명확성을 위해 다른 청크에 감사드립니다. – user240272

+0

흠 이제 MobRec 클래스가 mobInfo 배열의 존재를 확인하는 데 문제가 있습니다. mobdefc.h에 mobrec.h를 포함 시켰지만 행운은 없었습니다. 그것은 그것이 shouldnt하는 것을보아야한다 - 이것은 그렇게 어렵지 않아야한다. – user240272

0

MobDefs 클래스가 필요하지 않은 경우 NSMutableArray을 직접 사용할 수 있습니다. NSArray은 모든 유형의 객체를 보유 할 수 있으며 다른 객체 (예 : MName 속성)와 같은 방식으로 선언됩니다.

+0

감사합니다. 그러나 MobDefs 클래스에서 원하는 모든 개체에 대해 수행 할 다른 함수가 있습니다. 또한 여러 파일을 가지고있는 것이 프로젝트에서 유일한 코더가 아니므로 가장 잘 작동합니다. – user240272

3

무엇을 @synthesize이 오해한다고 생각합니다. 속성을 가져오고 설정하기위한 접근 자 메서드를 만듭니다 (즉, NSMutableArray를 반환하는 getter 메서드를 만들고 다른 NSMutableArray로 바꿀 수 있도록 setter 메서드를 만듭니다). NSMutableArray를 만들려면, 그 클래스의 이니셜 라이저에 다른 객체와 마찬가지로 객체를 만들면됩니다.

관련 문제