iOS频繁打开相册崩溃: ALAssetsLibrary error - “Too many contexts. No space in contextList.”
2015-01-06 11:04
525 查看
iOS频繁打开相册崩溃: ALAssetsLibrary error - “Too many contexts. No space in contextList.”
http://stackoverflow.com/questions/13480611/has-anyone-experienced-crashes-when-using-alassetslibrary-in-a-background-thread
原因:
因为频繁的调用
[[ALAssetsLibrary alloc] init]
即使你相册关闭, 但如果频繁调用这句话, 在ARC方式下, 估计iOS也没有及时清空内存,
就会导致 “Too many contexts. No space in contextList.”
因此, 解决方式就是使用单例调用.
或者我用了 DBCamera 库, 它已经提供了一个方法, 直接用也行.
测试后已经不那么容易崩溃了.
http://stackoverflow.com/questions/13480611/has-anyone-experienced-crashes-when-using-alassetslibrary-in-a-background-thread
原因:
因为频繁的调用
[[ALAssetsLibrary alloc] init]
即使你相册关闭, 但如果频繁调用这句话, 在ARC方式下, 估计iOS也没有及时清空内存,
就会导致 “Too many contexts. No space in contextList.”
因此, 解决方式就是使用单例调用.
+ (ALAssetsLibrary *) defaultAssetsLibrary { static dispatch_once_t pred = 0; static ALAssetsLibrary *library = nil; dispatch_once(&pred, ^{ library = [[ALAssetsLibrary alloc] init]; }); return library; }
或者我用了 DBCamera 库, 它已经提供了一个方法, 直接用也行.
ALAssetsLibrary *sharedLibrary = [[DBLibraryManager sharedInstance] defaultAssetsLibrary]; [sharedLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) { if (group) { NSString *nameStr = [group valueForProperty:ALAssetsGroupPropertyName]; } failureBlock:^(NSError *error) { NSLog(@"failureBlock"); }];
测试后已经不那么容易崩溃了.
相关文章推荐
- iOS开发者提交应用接收到邮件Too many symbol files - These symbols have no corresponding slice in any binary
- error: *** No iconv() implementation found in C library & libiconv 交叉编译 失败编译
- /usr/src/php-5.4.6/ext/gd/gd.c:1582: error: too many arguments to function ;zend_list_insert‘
- Keil 链接错误 Error: L6406E: No space in execution regions with .ANY selector matching
- "ERROR ITMS - 90167 No. app bundles found in the package". - iOS上传应用报错
- iOS app 发布错误 ERROR ITMS-90167: "No .app bundles found in the package"
- error: *** No iconv() implementation found in C library & libiconv 交叉编译 失败编译
- error: #29: expected an expression,error: #140: too many arguments in function call
- 对Too many classes in --main-dex-list,main dex capacity exceded提供简单几种方案。
- matlab突然无法打开.m文件 ??? Error using ==> feature Too many input arguments.
- iOS app 发布错误 ERROR ITMS-90167: "No .app bundles found in the package"
- .\Obj\main.axf: Error: L6406E: No space in execution regions with .ANY selector matching sin_i.o(.co
- iOS ALAssetsLibrary-代码操作iOS相册资源
- ios 相册操作 ALAssetsLibrary
- linux fedora 7 安装出现的 (configure: error: no acceptable C compiler found in $PATH)及 (No curses/termcap library found)处理
- .\Obj\main.axf: Error: L6406E: No space in execution regions with .ANY selector matching sin_i.o(.co
- iOS objc_msgSend iOS too many arguments in function call 报错解决方案
- Linux下 打开多个USB 2.0 摄像头的问题( libv4l2: error turning on stream: No space left on device )
- iOS app 发布错误 ERROR ITMS-90167: "No .app bundles found in the package"
- Error: java.lang.UnsatisfiedLinkError: no ntvinv in java.library.path