1

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

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

现在Azure SDK在NSData上的一个category中定义了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 与从手机中提取的崩溃日志相匹配。

有任何想法吗?

4

1 回答 1

2

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

于 2013-02-26T17:27:15.137 回答