Вставьте BOOL в id в Objective-C

Это мой код:

[delegate performSelectorOnMainThread:@selector(setVariablePremierAffichage:) withObject:TRUE waitUntilDone:NO];

Проблема в том, что аргумент "withObject" принимает только тип "id", поэтому, как я могу передать значение "TRUE" в тип id? Я также использую управление памятью ARC в Xcode для iOS 5.

Ответ 1

Передайте NSNumber. Используйте boolNumber = [NSNumber numberWithBool:TRUE]. Ваш метод должен быть определен как:

-(void)setVariablePremierAffichage:(NSNumber *)boolNumber
{
    BOOL value = [boolNumber boolValue];
    // do something
}

Ответ 2

Используйте CFbooleanreference и произведите его

[delegate performSelectorOnMainThread:@selector(setVariablePremierAffichage:) withObject:(id)kCFBooleanTrue waitUntilDone:NO];

Ответ 3

Невозможно применить примитив к id. Если вам нужно вызвать метод динамически, например, с помощью функции performSelector, вам нужно будет использовать NSInvocation:

NSMethodSignature *sig = [self methodSignatureForSelector:@selector(setVariablePremierAffichage:)];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:sig];
BOOL yes = YES;
[invocation setArgument:&yes atIndex:2];
[invocation setTarget:self];
[invocation setSelector:@selector(setVariablePremierAffichage:)];
[invocation invoke];

Ура!