@Synthesize类对象数组?

时间:2009-12-30 20:59:09

标签: objective-c

我认为有些困难是直截了当的。我试图创建一个类对象的数组,但遇到了不同的问题。目标是创建一个包含另一类对象数组的类。

任何帮助表示赞赏:

// 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];但这对任何事情似乎都没有好处。

2)你如何正确地@Synthesize一组类对象?

3 个答案:

答案 0 :(得分:3)

我认为你误解了@synthesize的作用。它创建了访问器方法来获取和设置属性(即,它将创建一个getter方法来返回NSMutableArray和一个setter方法,以允许您将其替换为另一个NSMutableArray)。要创建NSMutableArray,您只需创建一个类,就像该类初始化程序中的任何其他对象一样。

答案 1 :(得分: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

答案 2 :(得分:0)

您的MobDefs课程不是必需的,您可以直接使用NSMutableArrayNSArray可以保存任何类型的对象,并且以与任何其他对象(例如MName属性)相同的方式声明。