1

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 は、電話から取得したクラッシュ ログと一致します。

何か案は?

4

1 に答える 1

2

これはおそらく、シミュレーターではなくデバイス用にビルドするときに使用するビルド構成に対して、Azure フレームワークが適切にリンクされていないためです。これはカテゴリ メソッドの問題であるため、x86_64 または ARM でリンクする際の既知のバグである可能性があります。その場合は、 Other Linker Flags設定に追加-ObjC -all_loadしてみてください。

于 2013-02-26T17:27:15.137 に答える