Попробуйте что-то вроде этого:
workerThread = [[NSThread alloc] initWithTarget:self selector:@selector(someFunction) object:nil];
[workerThread start];
timeoutTimer = [NSTimer scheduledTimerWithTimeInterval:10.0 target:workerThread selector:@selector(cancel) userInfo:nil repeats:NO];
Убедитесь, что вы (1) проверили workerThread.isCancelled
, когда поток завершил работу, чтобы увидеть, истек ли поток, и (2) вызвали [timoutTimer invalidate]
, чтобы очистить таймер, если поток не истек.