Windows Azure SDK for iOS を使用してバイナリ ファイルを Azure Blob Storage にアップロードしています。Debug ではすべて正常に動作し、ビルドを電話に直接コピーすると、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 は、電話から取得したクラッシュ ログと一致します。
何か案は?