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