2010-06-28 4 views
0

Кто-нибудь знает, почему я получаю следующее сообщение об ошибке:Передача аргумент делает указатель из целого числа без броска

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath; 
{ 
id result = (Possession *)[possessions objectAtIndex:[indexPath row]]; 

[result setRowSwapped:TRUE]; //Passing argument makes pointer from integer without a cast 
} 

//This is the property on the possession object. I just want to set it as true thats it 
@property (nonatomic) bool *rowSwapped; 
+0

Отсортируйте свой код в следующий раз. –

+2

@ Карл. Он, очевидно, не знал, как; следовательно, теги '[CODE]'. @TheLearner Есть кнопка «Пример кода» над текстовым полем вопросов, вы можете использовать –

+0

@Michael, так как на экране появляется окно «Как отформатировать» на все время, когда кто-либо пишет вопрос, это вряд ли оправдание. –

ответ

0

Вы должны показать нам определение вашей setRowSwapped: рутины, чтобы быть уверенными, но он смотрит на меня как у вас есть несоответствие в определении и использовании. Вы применили этот метод к параметру BOOL *? Несмотря на это, немного странно набирать вашу переменную id - какова ваша цель на этом фронте?

1

TRUE - это число (равное 1 по значению), а setRowSwapped, похоже, ожидает какой-то указатель как аргумент. Таким образом, компилятор преобразует значение int 1 в указатель, что является предупреждением, потому что это вряд ли когда-либо правильно, и если бы оно было правильным, и вы знали бы, что делаете, вы использовали явное литье, которое также избегает предупреждение. Синус, который вы не использовали, вы, вероятно, ожидали, что метод ожидает логический аргумент, и это кажется неправильным.

BTW, так как это Objective-C, вы не должны использовать TRUE/FALSE в Objective-C, но ДА/НЕТ. Разница заключается в том, что TRUE/FALSE имеет тип bool (все строчные буквы, такие же, как _Bool или boolean_t на Mac), и это обычно обычно имеет тип int и 4 байта (по крайней мере, на PPC и Intel, возможно, не соответствует другим устройствам Apple , как iPad). YES и NO имеют тип BOOL (весь верхний регистр), и этот тип составляет 4 байта на PPC и 1 байт на Intel. Таким образом, bool и BOOL не всегда одинаковы, и в некоторых очень редких условиях это может действительно вызвать проблемы. Поэтому вы не должны смешивать их. В коде Obj-C используйте BOOL и YES/NO, в C-коде, используйте bool, boolean_t или _Bool и TRUE/FALSE.

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