使用NSLog进行调试

时间:2011-03-30 12:31:20

标签: objective-c xcode debugging nslog

我的Xcode中有以下代码片段:

NSString *digit [[sender titlelabel] text];
NSLog([digit]);

我尝试构建应用程序,并为行NSLog([digit]);

收到以下警告消息
Warning: Format not a string literal and no format arguments

您能告诉我如何解决此警告信息吗?消息实际意味着什么?

7 个答案:

答案 0 :(得分:50)

试试这段代码:

NSString *digit = [[sender titlelabel] text];
NSLog(@"%@", digit);

该消息表示您使用digit变量的语法不正确。如果您没有发送任何消息 - 您不需要任何括号。

答案 1 :(得分:25)

像这样使用NSLog()

NSLog(@"The code runs through here!");

或者像这样 - 使用占位符:

float aFloat = 5.34245;
NSLog(@"This is my float: %f \n\nAnd here again: %.2f", aFloat, aFloat);

NSLog()中,您可以像+ (id)stringWithFormat:(NSString *)format, ...

一样使用它
float aFloat = 5.34245;
NSString *aString = [NSString stringWithFormat:@"This is my float: %f \n\nAnd here again: %.2f", aFloat, aFloat];

您也可以添加其他占位符:

float aFloat = 5.34245;
int aInteger = 3;
NSString *aString = @"A string";
NSLog(@"This is my float: %f \n\nAnd here is my integer: %i \n\nAnd finally my string: %@", aFloat, aInteger, aString);

答案 2 :(得分:4)

为什么digit附近有括号? 它应该是

NSLog("%@", digit);

你在第一行中也错过了= ...

NSString *digit = [[sender titlelabel] text];

答案 3 :(得分:3)

NSLog(@"%@", digit);

控制台中显示了什么?

答案 4 :(得分:3)

正如警告试图解释的那样,使用NSLog的正确方法是使用格式化程序,而不是传入文字:

而不是:

NSString *digit = [[sender titlelabel] text];
NSLog(digit);

使用:

NSString *digit = [[sender titlelabel] text];
NSLog(@"%@",digit);

它仍然可以按照第一种方式工作,但这样做会消除警告。

答案 5 :(得分:2)

键入:BOOL 数据(是/否)或(1/0)

BOOL dtBool = 0; 

OR

BOOL dtBool = NO;
NSLog(dtBool ? @"Yes" : @"No");

输出:否

类型:长

long aLong = 2015;
NSLog(@"Display Long: %ld”, aLong);

OUTPUT:显示长:2015

long long veryLong = 20152015;
NSLog(@"Display very Long: %lld", veryLong);

输出:显示很长:20152015

type:String

NSString *aString = @"A string";
NSLog(@"Display string: %@", aString);

OUTPUT:显示字符串:字符串

键入:Float

float aFloat = 5.34245;
NSLog(@"Display Float: %F", aFloat);

输出:isplay Float:5.342450

类型:整数

int aInteger = 3;    
NSLog(@"Display Integer: %i", aInteger);

OUTPUT:显示整数:3

NSLog(@"\nDisplay String: %@ \n\n Display Float: %f \n\n Display Integer: %i", aString, aFloat, aInteger);

输出:  字符串:一个字符串

展示浮动:5.342450

显示整数:3

http://luterr.blogspot.sg/2015/04/example-code-nslog-console-commands-to.html

答案 6 :(得分:0)

NSLog([digit]); // [] are the messages in Objective-C, just like methods or functions in other programming languages

因为你只需要打印'digit'的值

或者你可以打电话 -

NSLog(digit); // A warning would occur - Format string is not a string literal (potentially insecure)

NSLog(@"%@",digit]); // But if you use %@ to reference the object, the warning will go away.

这两种方法都可以,但第二种方法是登录到控制台的正确方法。