Ios NSString内容在对象创建期间从原始文本更改
这是我看到的最好的简化案例Ios NSString内容在对象创建期间从原始文本更改,ios,objective-c,regex,nsstring,Ios,Objective C,Regex,Nsstring,这是我看到的最好的简化案例 NSString * test = @"??( "; NSLog(@"'%@'", test); console> '[' 我有工作要做 NSString * test = @"\x3f\x3f("; NSLog(@"'%@",test); console> '??(' 这似乎是由NSString对象活体化中的字符串插值或类似过程引起的。我发布这个问题有两个原因 1) 有人知道这到底是什么原因吗? 2) 我没有在NSString的这个“特性”上找到
NSString * test = @"??( ";
NSLog(@"'%@'", test);
console> '['
我有工作要做
NSString * test = @"\x3f\x3f(";
NSLog(@"'%@",test);
console> '??('
这似乎是由NSString对象活体化中的字符串插值或类似过程引起的。我发布这个问题有两个原因
1) 有人知道这到底是什么原因吗?2) 我没有在NSString的这个“特性”上找到任何东西,我花了一个小时才找到这个bug,所以这只是未来程序员的面包屑。为字符使用十六进制代码是解决方法。
NSlog(“%@”,test)代码>在语法上不正确。你是如何用这个语法错误编译它的
如果我将其更改为NSLog(@“%”,test)代码>,它工作正常(注意NSLog中表示@的字符串文字和大写字母L)。雷姆斯说的是真话(投票)。NSLog需要和NSString文字作为它的第一个参数。这是一个双引号字符串,前缀为@符号。只有双引号的字符串是C字符串,它是一个简单的以null结尾的字节数组。这两者是不可互换的,你应该得到一个编译器警告。这与实际问题无关。但是谢谢你赶上了这个节目typo@Nathan真的很难说,因为做得很好,我无法重现您的问题…您使用的是什么版本的Xcode?你在为哪个iOS版本构建?xcoode 6.1 ios6(但我在其他iOS版本中也看到过)很难诊断,因为它在Xcode 6.1/iOS 8中不可复制。如果感觉到这主要是为了面包屑,我不会担心。