我是 Objective-c 的新手。出于学习目的,我正在尝试构建类似电话簿的东西。所以我将创建一个名为 Person 的类,该类将具有一些属性(姓名、电话等)。
现在我并不在乎坚持。但是,我需要一些东西来“容纳”Person 对象。所以我想创建一个名为 People 的类,但我不知道如何设计它,特别是将保存对象的 NSMutableArray。
我所做的是:
PERSON.H
@interface Person : NSObject {
NSString *name;
}
@property(readwrite, copy) NSString *name;
@end
PERSON.M
@implementation Person
@synthesize name;
@end
人物.H
@interface People : NSObject {
NSMutableArray *peopleArray;
}
@property(readwrite, retain) NSMutableArray *peopleArray;
- (void)addPerson:(Person *)objPerson;
@end
人物.M
@implementation People
@synthesize peopleArray;
- (id)init {
if (![super init]) {
return nil;
}
peopleArray = [[NSMutableArray alloc] retain];
return self;
}
- (void)addPerson:(Person *)objPerson {
[peopleArray addObject:objPerson];
}
PHONEBOOK.M
...
Person *pOne = [[Person alloc] init];
pOne.name =@"JaneDoe";
People *people = [[People alloc] init];
[people addPerson:pOne];
当我尝试使用这段代码时,我收到一个错误:_发送到未初始化的可变数组对象的方法。
因此,由于我是新手,所以我的做法可能不是最好/正确的。那么,我该怎么做呢?
最佳答案
你的 people 初始化器有两个问题。它应该看起来更像这样:
- (id)init {
self = [super init]; // always assign the result of [super init] to self.
if (!self) {
return nil;
}
peopleArray = [[NSMutableArray alloc] init]; // use init not retain.
return self;
}
关于objective-c - 推荐 Objective-C 中的类设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3225955/