Objective c @不同方法中的选择器抛出错误

Objective c @不同方法中的选择器抛出错误,objective-c,Objective C,a) 我不完全理解@selector是什么 b) 在加载视图中,[self-performSelectorInBackground:@selector(createBlogPosts:)withObject:false]编译得很好,工作正常。然而,当我的refreshButtonPressed操作被触发时,我尝试运行相同的方法,只是使用不同的参数(无论哪种方式,如果我的参数为false都不重要),我会得到两个错误: (注意)不兼容的整数到指针转换将“int”发送到“id”类型的参数 (警告)AR

a) 我不完全理解@selector是什么 b) 在加载视图中,[self-performSelectorInBackground:@selector(createBlogPosts:)withObject:false]编译得很好,工作正常。然而,当我的refreshButtonPressed操作被触发时,我尝试运行相同的方法,只是使用不同的参数(无论哪种方式,如果我的参数为false都不重要),我会得到两个错误:

(注意)不兼容的整数到指针转换将“int”发送到“id”类型的参数 (警告)ARC不允许将“int”隐式转换为“id”


任何人谁是新的编码帮助将是伟大的!谢谢

performSelector:withObject:需要一个对象。BOOL不是一个对象,因此它将给出该错误

一种可能的解决方案是,让您的方法接收一个NSNumber
createBlogPosts:(NSNumber*)值
,然后进行如下操作:

- (void)viewDidLoad
{
    [self performSelectorInBackground:@selector(createBlogPosts:) withObject:false];
    self.progressBar.alpha = 0.0;
}

//actual method here
-(void)createBlogPosts:(BOOL)refresh

- (IBAction)refreshButtonPressed {
    //[self performSelectorInBackground:@selector(createBlogPosts:) withObject:false];
    [self performSelector:@selector(createBlogPosts:) withObject:true]; 
}
在方法中:

NSNumber *passedValue = [NSNumber numberWithBool:YES];
[self performSelector:@selector(createBlogPosts:) withObject:passedValue];
额外信息:
为什么它不会在viewDidLoad中崩溃?
因为<代码> false <代码>等于<代码> nIL/COD> >所以它将认为这是一个NIL对象,不会崩溃。


要更好地理解选择器,请阅读有关选择器的内容。

请注意,使用当前的Clang编译器,
[NSNumber numberWithBool:YES]
可以短接到
@YES
-(void)createBlogPosts:(NSNumber *)value {
   BOOL value = [value boolValue];
}