iOS代码在一个应用程序中泄漏,但在另一个应用程序中不泄漏
嗨,我一直在努力追踪我的应用程序中一个非常难以捉摸的内存泄漏 为了找出原因,我削减了泄漏的代码,甚至为了测试目的将其移动到app委托,以尽可能多地消除因素 下面的代码是通过选项从did finish launching调用的iOS代码在一个应用程序中泄漏,但在另一个应用程序中不泄漏,ios,memory-leaks,alassetslibrary,Ios,Memory Leaks,Alassetslibrary,嗨,我一直在努力追踪我的应用程序中一个非常难以捉摸的内存泄漏 为了找出原因,我削减了泄漏的代码,甚至为了测试目的将其移动到app委托,以尽可能多地消除因素 下面的代码是通过选项从did finish launching调用的 - (void)loadDataAsTest { NSLog(@"%s ", __PRETTY_FUNCTION__); _library = [[ALAssetsLibrary alloc] init]; [_lib
- (void)loadDataAsTest {
NSLog(@"%s ", __PRETTY_FUNCTION__);
_library = [[ALAssetsLibrary alloc] init];
[_library enumerateGroupsWithTypes:ALAssetsGroupPhotoStream usingBlock:^(ALAssetsGroup *alAssetsGroup, BOOL *stop) {
@autoreleasepool {
if (alAssetsGroup) {
[alAssetsGroup enumerateAssetsUsingBlock:^(ALAsset *alAsset, NSUInteger index, BOOL *st) {
@autoreleasepool {
if (alAsset) {
NSLog(@"index = %u", index);
UIImage *image = [UIImage imageWithCGImage:[alAsset thumbnail]];
}
else {
}
}
}];
}
}
} failureBlock:^(NSError *error) {
}];
}
在我的应用程序中,这段代码泄漏了大约2000张CGImage,列举了照片流中的1000张照片。创建的所有2000个UIImage都已发布
如果我为测试目的创建了一个新的空项目,并将相同的代码放在app委托中,然后以完全相同的方式调用它,那么它不会泄漏。所有CGimage都被释放,所有UIImage都将再次发布,每个实例大约有2000个
两个项目都使用ARC
为什么以完全相同的方式调用的同一代码在两个项目之间会表现出不同的行为?您是否在一个项目中设置了
NSZombieEnabled
?如果我选中“编辑方案诊断”选项卡,则在这两个项目中似乎都没有启用。是否有其他方法可以启用它们?