无法将对象传递给选择器

时间:2011-01-29 21:19:27

标签: ios objective-c

我正在后台执行数据下载,并在屏幕上显示进度条视图。下载过程中没有更新进度条(无论如何,我都在屏幕上更新代码),它只是空着直到下载完成然后在消失之前就已满。认为问题是我必须将进度视图对象传递给下载例程,我尝试按如下方式调用它:

[self performSelectorInBackground:@selector(downloadData) withObject:pBarView];

哪个电话:

-(void)downloadData:(UIProgressView *) pView {
}

当它尝试执行时,我收到以下错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSThread initWithTarget:selector:object:]: target does not implement selector (*** -[RootViewController downloadData])

我认为这可能不是解决这个问题的方法,但是此时我按下按钮并翻转开关,因为挡风玻璃上的地面变大了。如果这是错的,我会很感激如何让进度条更新工作。无论哪种方式,似乎我调用具有相同类型参数的downloadData方法,所以我的想法是我不应该得到错误。显然我在这里缺少一些东西。我看过NSObject文档,直到我的眼睛交叉。

1 个答案:

答案 0 :(得分:4)

你错过了选择器中的冒号。冒号表示您的方法采用的单个对象参数;否则程序试图找到一个不接受参数的方法downloadData,然后最终崩溃。

这应该有效:

[self performSelectorInBackground:@selector(downloadData:) withObject:pBarView];