ios – 为ALAssetRepresentation元数据方法报告崩溃

我有一些代码包装从ALAssetLibrary中枚举资产中检索的ALAsset对象.我收到用户遇到崩溃的报告,该部分包装对象要求其包含的元数据的ALAsset.

崩溃的代码是在这个包装类中,它只是要求它的ALAsset的元数据,如下所示:

[[myAlAsset defaultRepresentation] metadata];

这是一个部分堆栈跟踪,代表我看到的崩溃:

0
CoreFoundation   CFDataGetBytePtr + 5
1
PhotoLibraryServices     __46-[PLManagedAsset adjustmentsXMPRepresentation]_block_invoke + 228
2
PhotoLibraryServices     __46-[PLManagedAsset adjustmentsXMPRepresentation]_block_invoke + 228
3
CoreData     developerSubmittedBlockToNSManagedObjectContextPerform + 88
4
CoreData     -[NSManagedObjectContext performBlockAndWait:] + 114
5
PhotoLibraryServices     -[PLManagedAsset adjustmentsXMPRepresentation] + 226
6
AssetsLibrary    __33-[ALAssetRepresentation metadata]_block_invoke + 24
7
AssetsLibrary    __53-[ALAssetRepresentationPrivate _performBlockAndWait:]_block_invoke + 68
8
CoreData     developerSubmittedBlockToNSManagedObjectContextPerform + 88
9
libdispatch.dylib    _dispatch_client_callout + 22
10
libdispatch.dylib    _dispatch_barrier_sync_f_invoke + 26
11
CoreData     -[NSManagedObjectContext performBlockAndWait:] + 106
12
AssetsLibrary    -[ALAssetsLibrary _performBlockAndWait:] + 134
13
AssetsLibrary    -[ALAssetRepresentationPrivate _performBlockAndWait:] + 176
14
AssetsLibrary    -[ALAssetRepresentation metadata] + 464

有人有什么想法可能会发生什么?以这些资产为基础的AlAssetLibrary保存为静态引用,因此不应该在内存中进行清理,因此我不会指望ALAsset已被无效.这个问题似乎已经开始专门针对iOS 7发布了.

崩溃本身是EXC_BAD_ACCESS,KERN_INVALID_ADDRESS为0x0.

解决方法

这可能是由于缓冲区溢出造成的.请查看苹果网站的链接,显示缓冲区溢出崩溃报告与您相同.希望这可以帮助你.

https://developer.apple.com/library/ios/documentation/Security/Conceptual/SecureCodingGuide/Articles/BufferOverflows.html#//apple_ref/doc/uid/TP40002577-SW1

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...