我正在使用适用于 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 与从手机中提取的崩溃日志相匹配。
有任何想法吗?