ALAssetRepresentation 元数据方法报告崩溃

2023-12-29

我有一些代码包装了一个 ALAsset 对象,该对象是通过枚举 ALAssetLibrary 中的资产而检索到的。我收到用户的报告,称包装对象的部分向其包含的 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 https://developer.apple.com/library/ios/documentation/Security/Conceptual/SecureCodingGuide/Articles/BufferOverflows.html#//apple_ref/doc/uid/TP40002577-SW1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ALAssetRepresentation 元数据方法报告崩溃 的相关文章

随机推荐