编辑 我试图用代码实现的是创建一个包含 20 个独特“人”对象的数组。多亏了下面的人,我现在知道我将不再调用 dealloc。
for (int i = 0; i < 20; i++)
{
Person *myPerson = [[Person alloc] init];
myPerson.name = @"Brian";
myPerson.age = [NSNumber numberWithInteger:23];
[myArray addObject:myPerson];
[myPerson dealloc];
}
在学习 Objective C 的过程中,因此这段代码对你来说可能看起来很疯狂。但我来自 Java,所以我的逻辑还不适合 Objective C。
我试图用 20 个人物对象填充我的数组。但似乎我一直在添加同一个对象人。然后取消分配它,这违背了这一点。
所以我的问题是:用 20 个不同的人对象填充数组的正确方法是什么。每个人的名字和年龄在未来会有所不同,但在我学习的时候他们都是一样的。
唯一的方法就是输入大量这样的代码:
Person *myPerson1 = [[Person alloc] init];
myPerson.name = @"Brian";
myPerson.age = [NSNumber numberWithInteger:23];
[myArray addObject:myPerson1];
Person *myPerson2 = [[Person alloc] init];
myPerson.name = @"Brian";
myPerson.age = [NSNumber numberWithInteger:23];
[myArray addObject:myPerson2];
Person *myPerson3 = [[Person alloc] init];
myPerson.name = @"Brian";
myPerson.age = [NSNumber numberWithInteger:23];
[myArray addObject:myPerson3];
20次?还是有更优雅的解决方案?
谢谢你的建议。 -代码
最佳答案
除了在循环结束时释放 myPerson 之外,您的 for 循环代码是正确的。您不想取消分配它,因为该对象由数组保留。通常你不想直接调用 dealloc,而是想使用 retain/release。有关内存管理的更多信息,请查看 Apple's Guide
所以你是正确的,除了 dealloc 被更改为 release。
for (int i = 0; i < 20; i++)
{
Person *myPerson = [[Person alloc] init];
myPerson.name = @"Brian";
myPerson.age = [NSNumber numberWithInteger:23];
[myArray addObject:myPerson];
[myPerson release];
}
关于iphone - 在 Objective C 中创建自定义对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3647616/