2013-11-21 1 views
0

У меня есть два метода в моем классе под названием TestClientСтрока форматирования переменной длины и EXEC_BAD_ACCESS

-(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?

ответ

2

% я (или% d) - если вы хотите печатать целые

[proxy log:@"This is a test: %i %@",test, test2]; 

% @ - будем называть [далее] на класс, который вы хотите напечатать. Для встроенных типов переменных, таких как float, int, вам не нужно его использовать, поскольку они не являются объектами.

+1

Derp derp. Я подумал, что это что-то вроде этого. Клянусь, я пробовал% i, но он все еще разбился. Похоже, он работает. Я соглашусь, как только StackOverflow позволит мне. – danieljimenez

Смежные вопросы