iphone - NSMutableArray 如何正确添加和释放对象

标签 iphone objective-c ios4 nsmutablearray

我担心我是否正确添加对象并释放它们。

  1. NSMutableArray 实际包含什么 - 对象的副本还是指向它们的指针?
  2. 使用 NSMutableArray 的顺序是什么? (分配、初始化、工作、释放)
  3. 如何正确的保留和释放?

    NSMutableArray *listData = [[NSMutableArray alloc] init];
    int i = 0;
    for (i = 0; i < 3; i++)
    {
        MyData *obj = [[MyData alloc] init];
        NSString *name = nil;
        switch (i)
        {
            case 0:
                name = @"Semen";
                break;
            case 1:
                name = @"Ivan";
                break;              
            case 2:
                name = @"Stepan";
                break;              
            default:
                break;
        }       
        obj.name = name;
        [listData addObject: obj];
        [obj release];
     }
     [listData release]  //in dealloc method
    

或者我需要先释放所有包含的对象,然后才释放 NSMutableArray 对象?

谢谢!

最佳答案

NSMutable 数组包含对对象的引用。当你向 NSMutableArray 添加一个对象时,它会保留该对象。也就是说,将对象添加到数组后,您应该释放它。当您完成数组中的该对象后,您可以从数组中删除该对象。删除后,对象会自动收到释放消息。所以你不需要向它发送另一条发布消息。如果你释放数组本身,不需要向所有对象发送释放消息,因为在 NSMutableArray 的释放期间它会向它包含的所有对象发送释放消息。

1. alloc NSMutableArray.
2. alloc object1.
3. add object1 to array.
4. release object1.
5. alloc object2.
6. add object2 to array.
7. release object2.
8. add as many objects as needed in this manner.
8. work with object1.
9. remove object1 from array. it will receive a release automatically.
10. release the array. object2 and others will receive a release.

希望对您有所帮助。

关于iphone - NSMutableArray 如何正确添加和释放对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4034443/

相关文章:

iphone - 如何从ios应用程序和Windows应用程序(通过USB)访问iphone硬盘?

ios - 当iOS应用程序进入后台状态时启动线程

iphone - 使用自定义核心数据持久存储通过 web 服务获取数据?

iphone - 我什么时候使用initWithCoder : method?

ios - SwiftUI-HStack NavigationLink“按钮”分别向两个元素添加按钮样式?

ios - 关闭模态视图时不调用 ViewDidAppear

ios - View Controller 转换

objective-c - iPhone 中的图像处理

iphone - 找到最接近给定点的点

objective-c - 我的 iPhone 应用程序的这个 Objective-C 线程代码有什么问题?