Передача аргумента делает указатель из целого числа без приведения - PullRequest
0 голосов
/ 28 июня 2010

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

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

Ответы [ 3 ]

1 голос
/ 28 июня 2010

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

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

0 голосов
/ 29 июня 2010

Я использовал bool вместо BOOL.

0 голосов
/ 28 июня 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...