1

手に入れることができたすべてのiOSデバイスと、XCodeに接続されたエミュレーターで問題なくアプリをテストしました。今、私はAppleから、iOS6.0.1を実行しているiPad3rdGenでクラッシュしたためにアプリが拒否されたという連絡を受けました。

クラッシュログから私は読むことができます:

0   libsystem_c.dylib               0x39421d74 strlen + 28
1   Appname                         0x0000da16 +[Utilities sha256:] (Utilities.m:28)
2   Appname                         0x0000dc1c +[Utilities complete256Hash:]             (Utilities.m:46)
3   Appname                         0x0000ea66 -[SettingController TestSettingsTapped] (SettingController.m:83)

問題は次の機能に起因しているようです。誰かが私に何が間違っているのかを指摘できますか?Appleが受けているクラッシュを再現できないため、デンマーク語用にセットアップされているすべてのテスト済みデバイスと関係がある可能性があります。

+(NSString*) sha256:(NSString *)clear{
    const char *s=[clear cStringUsingEncoding:NSUTF8StringEncoding];
    NSData *keyData=[NSData dataWithBytes:s length:strlen(s)];
    uint8_t digest[CC_SHA256_DIGEST_LENGTH]={0};
    CC_SHA256(keyData.bytes, keyData.length, digest);
    NSData *out=[NSData dataWithBytes:digest length:CC_SHA256_DIGEST_LENGTH];
    NSString *hash=[out description];
    hash = [hash stringByReplacingOccurrencesOfString:@" " withString:@""];
    hash = [hash stringByReplacingOccurrencesOfString:@"<" withString:@""];
    hash = [hash stringByReplacingOccurrencesOfString:@">" withString:@""];
    return hash; 
}

ありがとう。

4

2 に答える 2

0

おそらく、あなたが探している nil clear は、1 つのメモリ警告 (Apple のレビュアーがアプリの動作を観察するために積極的に生成すること) から来ています。

于 2012-11-13T11:49:15.507 に答える
0

スニペットのstrlen()3 行目で行っている呼び出しに、不適切なポインターが渡されています。私が考えることができる最も可能性の高い理由は、sゼロだからclearです。

于 2012-11-12T19:35:55.790 に答える