当我收到警告时,NSLog仅打印正确的值

时间:2011-05-16 20:24:31

标签: objective-c nsstring

操作某些NSString对象时,我得到了垃圾值。我认为问题源于我对NSString在基本级别的工作方式的误解。下面,我有一个对象,它有一个字符串指针作为合成属性。当我尝试直接将其注销时,编译器会给我一个警告,但它会注销我期望的值。在下一行,我尝试以正确的方式记录该字符串,但最终我得到了垃圾。

代码段

MyObject *object = [self.objects objectAtIndex:indexPath.row];
NSString *myString = object.myString;
NSLog(myString); // format not a string literal and no formal arguments
NSLog(@"formatted = %s", myString);

输出

2011-05-16 13:06:51.137 MyProgram[917:207] thisValueIsGood
2011-05-16 13:06:51.138 MyProgram[917:207] formatted = `å

这个问题已经滚雪球到其他使用这个最终字符串的函数上。当我将该字符串与其他字符串连接起来时,我会得到更多垃圾。

1 个答案:

答案 0 :(得分:6)

NSString是一个对象,而不是%s,使用%@