NSThreads的问题

时间:2009-06-05 11:31:52

标签: objective-c multithreading

我的应用程序崩溃了 [NSThread detachNewThreadSelector: @selector(getJSON:) toTarget:self withObject:nil];

以下是getJSON函数的外观: - (void)getJSON: (NSDate *)startTime endTime:(NSDate *)endTime;

这是什么问题?

3 个答案:

答案 0 :(得分:6)

虽然你们是正确的,但方法选择器是错误的,你的解决方案无济于事,因为detachNewThreadSelector的选择器必须只有一个参数。

withObject参数将作为唯一参数传递给您的线程方法。

如果您的线程方法想要接收开始和结束时间,那么通常的方法是使用NSDictionary,例如:

[NSThread detachNewThreadSelector:@selector(getJSON:) 
                         toTarget:self 
                       withObject:[NSDictionary dictionaryWithObjectsAndKeys:
                             startTime, @"startTime",
                             endTime, @"endTime",
                             nil]];

然后线程方法将是

- (void) getJSON: (NSDictionary*) parameters
{
   NSDate* startTime = [parameters objectForKey:@"startTime"];
   NSDate* endTime = [parameters objectForKey:@"endTime"];
   ...
}

答案 1 :(得分:2)

- (void)getJSON:(NSDate *)startTime endTime:(NSDate *)endTime的选择器是

@selector(getJSON:endTime:)

答案 2 :(得分:1)

看起来你没有正确指定方法;每个参数都是方法名称的一部分:

[NSThread detachNewThreadSelector:@selector(getJSON:endTime:) 
                         toTarget:self 
                       withObject:nil];