我的应用程序崩溃了
[NSThread detachNewThreadSelector: @selector(getJSON:) toTarget:self withObject:nil];
以下是getJSON函数的外观:
- (void)getJSON: (NSDate *)startTime endTime:(NSDate *)endTime;
这是什么问题?
答案 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];