Проблема с NSThreads - PullRequest
       13

Проблема с NSThreads

1 голос
/ 05 июня 2009

Мое приложение падает на этой линии [NSThread detachNewThreadSelector: @selector(getJSON:) toTarget:self withObject:nil];

Вот как выглядит функция getJSON: - (void)getJSON: (NSDate *)startTime endTime:(NSDate *)endTime;

В чем проблема?

Ответы [ 3 ]

6 голосов
/ 06 июня 2009

Хотя вы, ребята, правы, селектор метода неправильный, ваше решение не поможет, потому что селектор для 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"];
   ...
}
2 голосов
/ 05 июня 2009

Селектор для - (void)getJSON:(NSDate *)startTime endTime:(NSDate *)endTime равен

@selector(getJSON:endTime:)
1 голос
/ 05 июня 2009

Похоже, вы не указали метод должным образом; Каждый аргумент является частью имени метода:

[NSThread detachNewThreadSelector:@selector(getJSON:endTime:) 
                         toTarget:self 
                       withObject:nil];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...