我正在我的 iPad 上运行一个将图像加载到轮播中的应用程序。总共有 138 张图片。如果我将该数字减少到 100,则应用程序加载正常。然而,在 138 处,应用程序暂停,而不是崩溃。
for
正在到达viewDidLoad 和第一个语句,如断点所示。问题在于第二个for
陈述。
// loading images into the queue
loadImagesOperationQueue = [[NSOperationQueue alloc] init];
NSMutableArray *tmpArray = [[NSMutableArray alloc] initWithCapacity:14];
for (int i = 0; i < 137; i++) {
[tmpArray addObject:[NSString stringWithFormat:@"cover_%d.jpg", i]];
}
for (int i = 0; i < 137; i++) {
int index = arc4random() % [tmpArray count];
NSString *imageName = [tmpArray objectAtIndex:index];
[tmpArray removeObjectAtIndex:index];
[(AFOpenFlowView *)self.view setImage:[UIImage imageNamed:imageName] forIndex:i];
}
我猜测存在内存问题,尽管由于我使用带有ARC的 iOS 5,我不应该进行任何手动内存管理。
有没有可能是记忆中发生的事情太多了?它有 138 张图片,每张约 146 KB。这大约是 20 MB,但我认为仅此一项不会导致问题。
GDB 退出时没有任何有用的输出,实际上根本没有输出。运行仪器显示,当暂停发生时,实际内存使用量仅为 6.11 MB,CPU 为 77.4%,但虚拟内存为 175 MB。
我担心的是没有内存警告甚至实际崩溃,线程只是暂停并且无法自动恢复或终止,您必须从 xcode 中终止它。