Objective c @合成类对象数组?
在我认为是直截了当的事情上有些困难。我试图创建一个类对象数组,但遇到了不同的问题。目标是创建一个类,该类包含另一类对象的数组 感谢您的帮助:Objective c @合成类对象数组?,objective-c,Objective C,在我认为是直截了当的事情上有些困难。我试图创建一个类对象数组,但遇到了不同的问题。目标是创建一个类,该类包含另一类对象的数组 感谢您的帮助: // Basic class unit @interface MobRec : NSObject { NSString *MName; int Speed; } @end // Master Class holding an array of units @interface MobDefs : NSObject { MobR
// 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) 如何正确地@synthesis类对象数组 您的
MobDefs
类不是必需的,您可以直接使用NSMutableArray
NSArray
可以保存任何类型的对象,并且声明方式与任何其他对象(例如MName
属性)相同。您的MobDefs
类不是必需的,您可以直接使用NSMutableArray
NSArray
可以保存任何类型的对象,并且声明方式与任何其他对象(例如您的MName
属性)相同。我认为您误解了@synthesis
的功能。它创建访问器方法来获取和设置属性(即,它将创建一个getter方法来返回该NSMutableArray,并创建一个setter方法来允许您用另一个NSMutableArray替换它)。要创建NSMutableArray,您只需在该类的初始值设定项中创建一个类似于任何其他对象的对象。我想您误解了@synthesis
的作用。它创建访问器方法来获取和设置属性(即,它将创建一个getter方法来返回该NSMutableArray,并创建一个setter方法来允许您用另一个NSMutableArray替换它)。要创建NSMutableArray,只需在该类的初始值设定项中创建一个类似于任何其他对象的对象。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在添加(或读取)时没有任何类型检查,因此可以添加任何想要添加的对象 在这种情况下,我会有类似于:
// 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
但主要看一下我强烈建议遵循Objective-C命名约定。类别资本化;方法和属性获取小写的第一个字母。所以应该是
MobRec*mobInfo
。我强烈建议遵循Objective-C命名约定。类别资本化;方法和属性获取小写的第一个字母。所以应该是MobRec*mobInfo
。谢谢。但是,我希望在MobDefs类中对所有对象执行其他函数。还有,有多个文件的工程最好的,因为我不是唯一的编码项目。谢谢。但是,我希望在MobDefs类中对所有对象执行其他函数。还有,有多个文件的工程最好的,因为我不是唯一的程序员对该项目。这是我一直在寻找!非常感谢。似乎在其他任何地方都找不到表示NSMutableArray不需要类型检查的简单语法。这应该有助于解决我的问题。嗯,现在我很难让MobRec类确认mobInfo数组的存在。我在mobdefs.h中加入了mobrec.h,但是运气不好。它应该看到它不应该它-这不应该如此困难。为什么MobRec类需要能够访问mobInfo数组?你的权利我不需要也不应该。我将代码移出以更好地组织。谢谢有时我需要这样一个问题来认识到我是在过度复杂化它。我发现如果我是在过度复杂化某个东西的设计,只要离开计算机,在一张纸上画出程序/方法的流程,就可以帮助我看到哪里出了错。这就是我一直在寻找的!非常感谢。似乎在其他任何地方都找不到表示NSMutableArray不需要类型检查的简单语法。这应该有助于解决我的问题。嗯,现在我很难让MobRec类确认mobInfo数组的存在。我在mobdefs.h中加入了mobrec.h,但是运气不好。它应该看到它不应该它-这不应该如此困难。为什么MobRec类需要能够访问mobInfo数组?你的权利我不需要也不应该。我将代码移出以更好地组织。谢谢有时我需要这样一个问题来认识到我把它复杂化了。我发现如果我把某个东西的设计复杂化了,只要离开计算机,在一张纸上画出程序/方法的流程,就能帮助我看出哪里出了错。