[英]String formatting, varargs and EXEC_BAD_ACCESS
我的类中有两个名为TestClient
-(void)log:(NSString *)logMessage, ...
{
va_list ap;
va_start(ap, logMessage);
[self log:logMessage withParameters:ap];
va_end(ap);
}
-(void)log:(NSString *)logMessage withParameters:(va_list)valist
{
NSString *formattedString = [[NSString alloc] initWithFormat:logMessage arguments:valist]; //Crashes here
[self callMethod:@"log" withParams:formattedString, nil]; //Calls my method.
}
这是我的单元测试:
-(void)testWtfCondition
{
int test = 1;
NSString *test2 = @"wtf";
[proxy log:@"This is a test: %@ %@",test, test2];
}
我的单元测试在NSString formattedString行与EXEC_BAD_ACCESS崩溃。 我在这里使用字符串格式化或varargs做错了吗? 是因为我正在尝试使用int进行格式化吗?
%i(或%d) - 如果要打印整数
[proxy log:@"This is a test: %i %@",test, test2];
%@ - 将在您要打印的课程上调用[description]。 对于像float,int这样的内置变量类型,你需要不能使用它,因为它们不是对象。
有关更多字符串格式,您可以查看字符串编程指南 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.