“如何解决问题”;EXC“不良访问”;在iOS上,当我们不';t创建正在读取的地址
我们遇到了一个问题,iOS的一个bug导致我们的应用程序崩溃。这种情况只发生在0.001%的用户身上,但一旦发生,就会导致应用程序无法使用(启动时崩溃) 问题是,根本缺陷存在于苹果的iOS代码中,我们无法直接修复。我们正在寻找解决方法,而不是根本原因修复“如何解决问题”;EXC“不良访问”;在iOS上,当我们不';t创建正在读取的地址,ios,objective-c,Ios,Objective C,我们遇到了一个问题,iOS的一个bug导致我们的应用程序崩溃。这种情况只发生在0.001%的用户身上,但一旦发生,就会导致应用程序无法使用(启动时崩溃) 问题是,根本缺陷存在于苹果的iOS代码中,我们无法直接修复。我们正在寻找解决方法,而不是根本原因修复 崩溃是EXC\u BAD\u ACCESS 我们不创建正在读取的数据地址。我们正在从PHImageManager requestImageDataForAsset获取一个NSData。当我们试图使用NSData.bytes+NSData.le
- 崩溃是
EXC\u BAD\u ACCESS
- 我们不创建正在读取的数据地址。我们正在从PHImageManager requestImageDataForAsset获取一个
。当我们试图使用NSData
+NSData.bytes
访问它时,它会在NSData.length
EXC\u BAD\u访问时崩溃李>
- 这是一个真实的内存地址(不是0x00000000),但我们的应用程序不允许访问它。我们从PHImageManager返回的NSData似乎具有无效指针或无效长度李>
- 这是非常罕见的。这种情况只发生在0.001%的用户身上,所以这可能是他们图书馆中一张糟糕照片的罕见问题
- 这不是暂时的。无论是什么原因导致了这种情况,每次应用程序为该用户启动时都会发生这种情况(我们会访问您的相机启动时滚动中的最后12张照片)
- 捕获EXC\u BAD\u访问似乎不可能:
[[PHImageManager defaultManager] requestImageDataForAsset:asset
options:opts
resultHandler:^(NSData* imageData, NSString* dataUTI, UIImageOrientation orientation, NSDictionary* info) {
if (!imageData || imageData.length == 0) {
return;
}
CC_MD5_CTX md5;
CC_MD5_Init(&md5);
CC_MD5_Update(&md5, imageData.bytes, (CC_LONG)imageData.length);
unsigned char digest[CC_MD5_DIGEST_LENGTH];
CC_MD5_Final(digest, &md5);
}];
事故日志
0 libcorecrypto.dylib md5_compress + 60
1 libcorecrypto.dylib ccdigest_update + 264
2 libcommonCrypto.dylib CC_MD5_Update + 188
... app code above ...
你能展示一下实际的代码吗?还有崩溃日志?@matt添加了代码。仍然不知道哪一行崩溃,或者崩溃日志是什么样子。是否有可能存在一个只有1字节信息的图像?这将导致访问不良。如果您要访问多个字节的信息,我建议您将
If
语句更改为返回Iflength您已经从根本上改变了对代码的定义,并且您仍然没有回答有关崩溃的关键问题。对这些事情最好不要害羞。你提供的信息越真实,就越有可能有人能提供帮助。