Сценарий такой -
В моем приложении есть представление прокрутки со многими экземплярами
MyCustomImageDownloaderController (содержит изображения, где изображения должны быть назначены после загрузки).
Согласно нашему требованию, изображение должно быть загружено при переходе на страницу.
Представление прокрутки + (MyCustomImageDownloaderController1, MyCustomImageDownloaderController2, MyCustomImageDownloaderController3 .... и т. Д.)
Допустим, я прокручиваю его,
я добрался до страницы 1 -> изображение для загрузки должно начаться
я добрался до страницы 2 -> изображение для загрузки должно начаться ... так далее
и если я на странице 3 и изображения для предыдущих страниц, если они не были загружены, они должны прекратить загрузку.
Так что я попробовал с использованием потоков ..
по API ..
- (void)scrollViewDidEndDecelerating:(UIScrollView *)sender{
Step 1) calculated currentPageNumber
Step 2) started thread for downloading image with url for this currentPage
//startBackGroundThreadForPlaceImage:(NSURL *) url
Step 3)stopped thread for previous page , if that is still running
}
Теперь MyCustomImageDownloaderController имеет вид
-(void) startBackGroundThreadForPlaceImage:(NSURL *) url{
if(isImageDownloaded == NO){
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//[self performSelectorInBackground:@selector(loadImageInBackground:) withObject:imageUrl];
myThread = [[NSThread alloc] initWithTarget:self selector:@selector(loadImageInBackground:) object:imageUrl];
//[NSThread detachNewThreadSelector:@selector(loadImageInBackground:) toTarget:self withObject:imageUrl];
[myThread start];
NSLog(@"The current thread is %@ ", [[NSThread currentThread] name]);
[pool release];
}
}
СЕЙЧАС Здесь селектор выполняет загрузку изображения и присваивает его виду
Теперь остановка потока
-(void) stopBackgroundThread{
[myThread cancel];
//[[NSThread currentThread] cancel];
//if([[NSThread currentThread] isCancelled]) {
//[NSThread exit];
//}
[NSThread exit];
}
-(BOOL) isThreadRunning{
return [myThread isExecuting];
}
Так что я много чего перепробовал, но не смог остановить поток между ..
В основном один раз созданный поток с использованием любого из трех методов
1) выполнить селектор в BackGround
2) NSThread отсоединить новую тему
3) NSThread alloc..init с ..
В первых двух методах, как получить экземпляр только что созданного потока, чтобы я мог его остановить,
как NSThread currentThread не дает этого
в методе 3,
myThread = [[NSThread alloc] initWithTarget:self selector:@selector(loadImageInBackground:) object:imageUrl];
когда я пытался
[myThread cancel];
Это не отменяло эту тему ,,
Когда я попробовал
[NSThread exit];
он висит на текущем экране ,,,, я думаю, он остановил основной поток
Пожалуйста, помогите мне
Заранее спасибо * сильный текст *