У меня есть nsthread, цикл while внутри этого.Он получает объекты из «поточно-ориентированной» очереди в методе main.Когда я покидаю UIViewController, который содержит этот объект nsthread, я вызываю метод отмены nsthread, но он не останавливается, потому что он заблокирован NSCondition «queueLock».Когда я вернусь к этому UIViewController, будет создан новый nsthread, который получит объекты из очереди, но предыдущий поток по-прежнему завершается, и оба они пытаются использовать один и тот же объект из очереди, что вызывает проблему с управлением памятью.У меня вопрос, как мне остановить этот поток, когда я покидаю UIViewController.
Основной метод NSThread:
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
while ([self isCancelled] == NO) {
RenderRequest *renderRequest = [queue get];
[self doRender:renderRequest];
[renderRequest release];
}
[pool drain];
Это метод get класса очереди:
- (id) get {
id toRet = nil;
[queueLock lock];
@try {
while ([queueContents count] == 0) {
[queueLock wait];
}
toRet = [queueContents lastObject];
[queueContents removeLastObject];
}
@finally {
[queueLock unlock];
return toRet;
}
}
Спасибо!