ios - NSData dataWithBytesNoCopy 返回错误类型?

标签 ios objective-c azure

我正在使用适用于 iOS 的 Windows Azure SDK 将二进制文件上传到 Azure Blob 存储。在调试中一切正常,并且当构建直接复制到手机时,但是当它在通过 TestFlight 发送的 AdHoc 构建上运行时,我收到此异常:

NSInvalidArgumentException: -[__NSCFConstantString dataWithBase64DecodedString]: unrecognized selector sent to instance

现在Azure SDK在NSData的一个类别中定义了dataWithBase64DecodedString,并且异常发生在这段代码中:

void* buffer=malloc(CC_SHA256_DIGEST_LENGTH);
CCHmac(kCCHmacAlgSHA256, [cKey bytes], [cKey length], [contentData bytes], [contentData length], buffer);
NSData *encodedData = [NSData dataWithBytesNoCopy:buffer length:CC_SHA256_DIGEST_LENGTH freeWhenDone:NO]; 
contentMD5 = [encodedData stringWithBase64EncodedData]; /* exception is on this line */
free(buffer);

如您所见,encodedData 应该是 NSData。有时确实如此。但一旦编译并在手机上,远离我的调试器,就不那么重要了。 Airbrake 与从手机中提取的崩溃日志相匹配。

有什么想法吗?

最佳答案

这可能是因为 Azure 框架未正确链接到您在为设备而不是模拟器构建时使用的构建配置。由于这是类别方法的问题,因此问题可能是 known bug在 x86_64 或 ARM 上链接时。如果是这种情况,请尝试将 -ObjC -all_load 添加到其他链接器标志设置中。

关于ios - NSData dataWithBytesNoCopy 返回错误类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15075684/

相关文章:

带有标签栏和导航 Controller 的 iOS 应用

c# - 如何通过webservice将动态参数传递给sql查询

用于连接到 One Drive for Business 的 Python 脚本

performance - 云性能与桌面性能

ios - iOS 何时更改版本号?

ios - 创建自己的 UILexicon 条目

ios - 无法使用模拟器从 iOS 中的 ImagePicker 获取图像路径和图像?

objective-c - 使用类别和核心数据进行自定义排序 - 框架是否支持?

c++ - C++ 和 Objective C 中的多态性

sql - SQL Azure 上的查询性能极差