我在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];
会做到吗?!
非常感谢,如果有人可以帮助我:))
答案 0 :(得分:2)
如果您正在使用Instruments检测泄漏,请考虑泄漏将显示泄漏内存分配点的事实,而不是实际发生泄漏的位置。
您的代码似乎对我而言。将其添加为子视图后,您正确释放imageView
。问题可能在于theView
或包含它的任何其他对象。您可以在代码中查看该部分(例如,theView
是否已正确发布?)
答案 1 :(得分:0)
您使用过imageNamed:方法吗?因为此方法导致imageView中的内存泄漏:)
答案 2 :(得分:0)
尝试将断点保持为(; iCount&lt; =(4 - roundedNumber); iCount ++) 并确保在任何时候4-roundedNumber不会超出范围或具有一些它不应该具有的异常值......