1
Einfach gesagt, der folgende Code hat mich verblüfft, warum es fehlschlagen sollte.NSStringWithFormat Crash
// This line works
NSString * string = [NSString stringWithFormat:@"%lu",[[NSDate date] timeIntervalSince1970]];
// This line works
string = [NSString stringWithFormat:@"%@",@"somestring"];
// This line generates and EXEC_BAD_ACCESS error
string = [NSString stringWithFormat:@"%lu%@",[[NSDate date] timeIntervalSince1970],@"somestring"];
Warum?
Oder Sie könnten es zu einem int, d. H. "@"% Lu% @ ", (unsigned int) NSDate.date.timeIntervalSince1970" - obwohl dieser Kommentar nur der Vollständigkeit halber ist; Ich würde tun, was die Antwort sagt :) – deanWombourne
Das wird zwar keinen Absturz verursachen, nur eine unsignierte Version des Rückgabedatums generieren, was die Absicht für meine Zwecke ist. – YuzaKen
@sch - Sie wissen nicht, was passiert mit dem Stapel als Nebeneffekt der Weitergabe im falschen Format Specifier :) Ich vermute, es funktioniert nicht in beiden Fällen, aber der Schaden wird in einem sicheren Abschnitt des Speichers in Fall getan (1), aber im Speicher versuchen Sie dann, im Fall (2) zu verwenden. – deanWombourne