EXC_BAD_ACCES 尝试创建类似 "test%40test.nl" 的字符串时出错

EXC_BAD_ACCES error when trying to create a string like "test%40test.nl"

有人可以解释这种行为以及如何解决这个问题吗?我找不到任何相关内容。

// everything is fine
var test1 = "String without percentage";
NSLog(test1);

// fine
var test2 = "String with percentage %";
NSLog(test2);

// fine
var test3 = "test@test.nl";
NSLog(test3);

// still fine
var test4 = "%";
NSLog(test4);

var test5 = "test%40test.nl";
NSLog(test5); // error: EXC_BAD_ACCESS (code=1, address=0x0)

我实际上可以在调试中看到并打印字符串 window 但是当我尝试在代码中使用变量时,我总是收到错误。

test5   String  "test%40test.nl"    

NSLog 使用 % 作为字符串插值字符 (à la printf)。如果你想打印百分号,你需要用 %%.

引用它
NSLog(@"Here's a percent sign: %%");

它崩溃的原因是(我认为)它期望字段宽度为 40 的 %t (ptrdiff_t)。您没有传递额外的参数,因此 EXC_BAD_ACCESS.

要打印 %,您需要:"%%"

var test5 = "test%%40test.nl";
NSLog(test5);