我对 NSLog 的语法有点困惑。例如,
NSString *nameString = @"姓名";
NSLog(@"nameString 为:%@", nameString);

如果我的理解是正确的(它很可能不是),那么 nameString 被定义为指向 String 的指针。我当时认为这将打印 nameString 保存的内存地址,而不是该地址的值。因此,如果这是真的,那么在 NSLog 语句中,要获取指针的值,我们是否应该像这样使用星号符号来访问 nameString 指向的内容:
NSLog(@"nameString 为:%@", *nameString);

?
自从用 C 编程以来已经有一段时间了,但由于 Objective-C 是 C 的超集,我认为它们的行为会相似。

一个解释将不胜感激!谢谢!

最佳答案

命令 %@ 就像在接收器上调用方法 -description 的“快捷方式”。对于 NSString,它只显示字符串本身,因为它是从 NSObject 继承的,您可以覆盖它,如果您为自己的类创建,则非常有用。在这种情况下,默认行为是打印指针的值。如果要打印字符串中指针的地址,只需替换为:

NSLog(@"nameString is: %p", nameString)

关于iphone - NSLog 指针语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15997336/

10-12 13:37