iphone - 在 Objective C 中创建自定义对象数组

标签 iphone objective-c model-view-controller

编辑 我试图用代码实现的是创建一个包含 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/

相关文章:

iphone - 在类的 dealloc 方法中释放之前,我们可以检查对象是否为 nil

iphone - 检查互联网连接以及连接类型?

iphone - UIDatePicker DidSelectRow 方法?

java - Ruby on Rails "url_for"是否有 Java 等效项?

asp.net - 可以在 Blazor Server App 中使用区域吗?

iphone - Google Analytics 跟踪在 ios 上对我不起作用,我的 GANTrackerDelegate 永远不会被调用

ios - Xcode 7.3 Simulator 未定义的建筑符号

javascript - 在 JavaScript 中选择 OOP 模式

html - 我的 iOS 应用程序中的标题从中心向左移动

iphone - ios - 将单个手势识别器添加到多个标签