内存泄漏的方法非常小(objective-c / iphone)

时间:2011-07-13 12:26:22

标签: iphone objective-c

我在iPhone应用程序中遇到一些非常小的问题。

示例代码(类似于真实代码):

+ (void) drawSomething: (UIView *) theView anImportantNumber: (NSNumber *) importantNumber {
    UIImage *tehImage = [[WebviewUtil sharedInstance] goldStarImage];

    int iCount = 0;
    double roundedNumber = round([importantNumber doubleValue]);
    for (; iCount <= (4 - roundedNumber); iCount++) {
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake((iCount * 15) + 9, 6, 14, 13)];
        [imageView setImage:tehImage];
        [imageView setOpaque:YES];
        [theView addSubview:imageView];
        [imageView release];
    }
}

在行UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake中,仪器报告内存泄漏。任何人都可以给我一个提示,错误是什么?我想,[imageView release];会做到吗?!

非常感谢,如果有人可以帮助我:))

3 个答案:

答案 0 :(得分:2)

如果您正在使用Instruments检测泄漏,请考虑泄漏将显示泄漏内存分配点的事实,而不是实际发生泄漏的位置。

您的代码似乎对我而言。将其添加为子视图后,您正确释放imageView。问题可能在于theView或包含它的任何其他对象。您可以在代码中查看该部分(例如,theView是否已正确发布?)

答案 1 :(得分:0)

您使用过imageNamed:方法吗?因为此方法导致imageView中的内存泄漏:)

答案 2 :(得分:0)

尝试将断点保持为(; iCount&lt; =(4 - roundedNumber); iCount ++) 并确保在任何时候4-roundedNumber不会超出范围或具有一些它不应该具有的异常值......