在Objective-C中将BOOL转换为id

Ale*_*lex 10 iphone objective-c

这是我的代码:

[delegate performSelectorOnMainThread:@selector(setVariablePremierAffichage:) withObject:TRUE waitUntilDone:NO];
Run Code Online (Sandbox Code Playgroud)

问题是参数"withObject"只采用"id"类型,那么,如何将我的值"TRUE"转换为id类型?我还在Xcode for iOS 5中使用ARC内存管理.

XJo*_*nes 21

通过NSNumber.使用boolNumber = [NSNumber numberWithBool:TRUE].您的方法应定义为:

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

  • 好吧,这是一个值得争论的惯例.我在代码中使用YES/NO.在OP使用它时,在答案中输入TRUE.由于含义显而易见,因此并不特别重要.真正重要的约定是影响可读性,理解或具有隐含意义的约定(例如,在ARC之前的日期返回自动释放对象的方法等). (4认同)
  • 我想你的意思是说`[NSNumber numberWithBool:YES]`因为BOOL的Objective-C约定是`YES`和`NO`而不是`TRUE`和`FALSE` (2认同)
  • 是的它有效,但有一些约定,YES/NO是Objective-C的一个. (2认同)

pra*_*epa 5

使用 CFbooleanreference 并强制转换它

[委托 PerformSelectorOnMainThread:@selector(setVariablePremierAffichage:) withObject:(id)kCFBooleanTrue waitUntilDone:NO];