gpt4 book ai didi

objective-c - 推荐 Objective-C 中的类设计

转载 作者:搜寻专家 更新时间:2023-10-30 20:01:51 25 4
gpt4 key购买 nike

我是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com