【问题标题】:NSmutable memory issues for iphoneiPhone的NSmutable内存问题
【发布时间】:2010-07-20 03:48:35
【问题描述】:

我正在使用这个 a1 = [[NSMutableArray alloc] init];现在应该是发布a1的最佳方式

现在我在 dealloc() 中释放

我在 viewdidload() 中分配 a1 并在那里显示 10 张图像

【问题讨论】:

    标签: iphone


    【解决方案1】:

    一个基本的例子是这样的:

    // get the party started
    NSMutableArray *tmpArray = [[NSMutableArray alloc] init];
    // as an example, just copy some user defaults into the mutable array
    tmpArray = [[userDefaults objectForKey:@"UserDefaultsExample"] mutableCopy];
    
    // do something here with tmpArray (i.e. if ([tmpArray count] == 0) //do something)
    
    // once you are done with tmpArray, go ahead and release it
    [tmpArray release];
    

    对于您的情况,您希望在完成后释放数组(即,在viewDidLoad 的末尾,只要您真的完成了它,这可能是一个安全的选择)。如果你这样做,你不需要在你的 .h 文件中创建一个 NSMutableArray 对象,合成它并在 dealloc 中释放。相反,您只需像我在上面所做的那样创建一个临时的,并在完成显示其中的图像后释放它。

    【讨论】:

    • 非常感谢,即使我释放了我的 reatincount =1 [a1 release]; NSLog(@"what youdont have %d",[a1 retainCount]);=1 如何使其为 0,是否需要跟踪所有数组和字符串 reatinCount =0 以进行内存优化??
    • 使用mutableCopy 之类的便捷方法将对象放入自动释放池中,这样您的保留计数可能不会立即为零。您可能需要一些额外的阅读:cocoawithlove.com/2009/07/rules-to-avoid-retain-cycles.htmldeveloper.apple.com/mac/library/DOCUMENTATION/Cocoa/Conceptual/…
    • 嘿,像 thi UserDefaultsExample 这样的键可以通过任何方式吗???它只是一个文本不是吗???或者还有什么 .. 除了 tmpArray = [[userDefaults objectForKey:@"UserDefaultsExample"] mutableCopy]; 你还在使用 UserDefaultsExample
    • 阅读概述部分的第 3 段,了解它接受哪些数据类型:developer.apple.com/mac/library/documentation/Cocoa/Reference/… ..用户默认通过属性列表工作,因此它必须采用该格式。
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多