Objective c 如何使用变量进行NSLog
要打印Objective c 如何使用变量进行NSLog,objective-c,Objective C,要打印*新闻字符串,下面的正确格式应该是什么 NSString *newString = @"Hello this is a string!"; NSLog(@newString); @符号只是指定一些常见Objective-C对象的简写@“…”表示字符串(NSString,具体而言,它不同于常规的C字符串),@[…]表示数组(NSArray),@{…}表示字典(NSDictionary) 在第一行,您已经使用@符号指定了一个NSString对象newString现在是一个NSString实例
*新闻字符串
,下面的正确格式应该是什么
NSString *newString = @"Hello this is a string!";
NSLog(@newString);
@
符号只是指定一些常见Objective-C对象的简写@“…”
表示字符串(NSString
,具体而言,它不同于常规的C字符串),@[…]
表示数组(NSArray
),@{…}
表示字典(NSDictionary
)
在第一行,您已经使用@
符号指定了一个NSString
对象newString
现在是一个NSString
实例。在第二行,您只需给出它的变量名:
NSLog(新闻字符串)代码>
理论上,您可以只给出变量名,但这是一种危险的方法。如果newString
有任何格式说明符,您的应用程序可能会崩溃/混乱(或访问不应该访问的内容),因为NSLog
将尝试读取与格式说明符对应的参数,但参数不存在。安全的解决方案是NSLog(@“%@”,newString)代码>。NSLog
的第一个参数现在是硬编码的,无法更改。我们现在知道它只需要一个参数,我们提供的参数是,newString
,所以我们是安全的
因为您已经指定了一个字符串,并且只是将该实例传递给NSLog
,所以不需要再次使用@
符号。NSLog
的工作原理与Cprintf
的工作原理非常相似,还添加了%
字符串格式说明符,该说明符用于对象。作为对象,%@
是正确的格式:
NSString *newString = @"Hello this is a string!";
NSLog(@"%@", newString);
尽管看起来很诱人,但千万不要这样做
NSLog(newString); //NONONONONO!
因为这是一种可怕的做法,可能会导致意外的崩溃(更不用说安全问题)
关于这个主题的更多信息:这可能是不安全的,你不应该养成这个习惯<代码>NSLog(@“%@”,新闻字符串)代码>是正确的。看,NSLOG不会处理这个吗?它无论如何都不接受常规的C字符串,您需要提供一个NSString,它无论如何都应该被控制。如果newString
是@“%@%@%@%@%@%@%@”,该怎么办。繁荣是什么。