Приведение к указателю из целого числа разного размера в executeSelectorOnMainThread: withObject: waitUntilDone - PullRequest
1 голос
/ 10 февраля 2010

у меня есть:

 BOOL someBoolValue = ... //some code returning BOOL

когда я пытаюсь вызвать:

[self performSelectorOnMainThread:@selector(refreshView:) withObject:someBoolValue waitUntilDone:NO];

Я получаю предупреждение:

приведение к указателю из целого числа другого размера

Есть намеки на это?

1 Ответ

5 голосов
/ 10 февраля 2010

Вы передаете «сырое» логическое значение, где id (указатель на объект) должен быть.

[self performSelectorOnMainThread: @selector(refreshView:) 
      withObject:someBoolValue 
      waitUntilDone:NO]

должно быть лучше

[self performSelectorOnMainThread:@selector(refreshView:) 
      withObject: [NSNumber numberWithBool: someBoolValue] 
      waitUntilDone: NO]

Вы можете извлечь логическое значение в вашем методе refreshView:, отправив метод boolValue в числовой объект:

if( [myWrappedBoolean boolValue] ) {
    ...
}

В отличие от Java или C #, Objective-C не имеет «автобокса» от примитивных значений до объектов. Тип BOOL - это просто маленький целочисленный тип, который вызывает сообщение об ошибке, которое вы видите, поскольку компилятору нужен указатель для второго аргумента performSelectorOnMainThread:withObject:waitUntilDone:.

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