我已经在我能够接触到的所有iOS设备上测试了我的应用程序,并且在连接到XCode的模拟器上没有任何问题。现在我从苹果公司回复说,该应用程序因运行iOS 6.0.1的iPad 3rd Gen崩溃而被拒绝。
从崩溃日志中我可以看到:
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;
}
感谢。
答案 0 :(得分:0)
你在代码片段的第三行上进行的strlen()
调用正在传递一个错误的指针。我能想到的最可能的原因是因为s
为零,因为clear
也是零。
答案 1 :(得分:0)
也许你正在寻找的nil明确来自一个记忆警告(苹果评论员积极制作以观察你的应用程序的行为)。