我已经在所有能够使用的 iOS 设备以及连接到 XCode 的模拟器上测试了我的应用程序,没有任何问题。现在我从 Apple 那里得到消息,该应用程序由于运行 iOS 6.0.1 的第三代 iPad 崩溃而被拒绝。
从崩溃日志中我可以看到:
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;
}
谢谢。