【发布时间】:2012-11-29 12:50:09
【问题描述】:
虽然启用了自动引用计数,但我遇到了内存泄漏。
我做了一点调试,发现了应用程序获取此输出的问题:
*** error: can't allocate region*** set a breakpoint in malloc_error_break to debug
我一直追踪到这一点:
if (currentTime < 60) {
currentTimeMin = 0;
ct.text = [NSString stringWithFormat:@"%i:%i", currentTimeMin, currentTime];
}
if (currentTime >= 60) {
currentTimeMin = 1;
ct.text = [NSString stringWithFormat:@"%i:%i", currentTimeMin, currentTime -60];
}
if (currentTime >= 120) {
currentTimeMin = 2;
ct.text = [NSString stringWithFormat:@"%i:%i", currentTimeMin, currentTime -120];
}
if (currentTime >= 180) {
currentTimeMin = 3;
ct.text = [NSString stringWithFormat:@"%i:%i", currentTimeMin, currentTime -180];
}
if (currentTime >= 240) {
currentTimeMin = 4;
ct.text = [NSString stringWithFormat:@"%i:%i", currentTimeMin, currentTime -240];
}
if (totalTime < 60) {
totalTimeMin = 0;
tt.text = [NSString stringWithFormat:@"%i:%i", totalTimeMin, totalTime];
}
if (totalTime >= 60) {
totalTimeMin = 1;
tt.text = [NSString stringWithFormat:@"%i:%i", totalTimeMin, totalTime -60];
}
if (totalTime >= 120) {
totalTimeMin = 2;
tt.text = [NSString stringWithFormat:@"%i:%i", totalTimeMin, totalTime -120];
}
if (totalTime >= 180) {
totalTimeMin = 3;
tt.text = [NSString stringWithFormat:@"%i:%i", totalTimeMin, totalTime -180];
}
if (totalTime >= 240) {
totalTimeMin = 4;
tt.text = [NSString stringWithFormat:@"%i:%i", totalTimeMin, totalTime -240];
}
我认为问题出在标签上:ct 和 tt,但我不确定并且似乎无法弄清楚原因。直到一天前我对 UITableVIews 进行了一些试验,一切都运行良好。
最好的问候!马丁
【问题讨论】:
-
您是否尝试过添加
malloc_error_break断点的建议? -
您将相同的文本设置了 4 次。有什么理由吗?
-
stringWithFormat 本身不会造成问题。虽然可能是你已经丢弃了堆,而 stringWithFormat 是发现它的地方。
-
(假设 currentTime 为 60 并研究控制将如何流经您的代码。)
-
(在尝试更多使用 Objective-C 之前,请考虑使用 Java 一段时间。)
标签: iphone objective-c ios memory-management xcode4.5