簡體   English   中英

viewDisappear時停止Loop的最佳方法是什么

[英]What is the best way stop Loop when viewDisappear

我的目標是當viewDidLoad以頻率0,8秒開始(刷新)並且在視圖消失后停止(刷新)。

在viewDidLoad調用(refres)函數:

@proptery disAppear;
- (void)viewDidLoad {
   [super viewDidLoad];
   NSLog(@"TeklifVer-viewDidLoad()");
   self.disAppear = NO;
   [self refresh];    
}

- (void)viewDidDisappear:(BOOL)animated {
   NSLog(@"viewDiddisappear"); 
   self.disAppear = YES;
}

on(refresh)函數調用(refresh): [self performSelector:@selector(refresh) withObject:nil afterDelay:0.8]; 如果不是disAppear。

- (void) refresh
{
    NSLog(@"refresh");

    ...
    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

        NSDictionary * responseDictionary = (NSDictionary *)responseObject;

        if (!self.disAppear) {
            ...
            TeklifVerModel * teklifVerModel = [[TeklifVerModel alloc] initWithDictionary:responseDictionary];

            //init labels
            ...

            @try {
                if (teklifVerModel.ihaleStatus == 2) {
                    self.nextPage = true;
                } else if (teklifVerModel.ihaleStatus == 5) {
                    self.ihaleListesi = true;
                }
            }
            @catch (NSException *exception) {
                NSLog(@"error: %@", exception);
            }
        }

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"error: %@", error);
    }];
    [operation start];

    if (self.nextPage) {
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        IhaleViewController * ihale = [storyboard instantiateViewControllerWithIdentifier:@"ihaleViewController"];
        [self presentViewController:ihale animated:YES completion:nil];
    } else if (self.ihaleListesi) {
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        IhaleListesiViewController * ihaleListesi = [storyboard instantiateViewControllerWithIdentifier:@"ihaleListesi"];
        [self presentViewController:ihaleListesi animated:YES completion:nil];
    } else if(!self.disAppear) {
        [self performSelector:@selector(refresh) withObject:nil afterDelay:0.8];
    }
}  

日志

2015-07-03 15:51:24.918 uztb[729:129628] refresh
2015-07-03 15:51:25.189 uztb[729:129628] viewDidDisappear
2015-07-03 15:51:25.720 uztb[729:129628] refresh
2015-07-03 15:51:26.522 uztb[729:129628] refresh
2015-07-03 15:51:27.324 uztb[729:129628] refresh
2015-07-03 15:51:28.127 uztb[729:129628] refresh

我的問題是當viewDisapper仍然執行某些(刷新)時。 有時(刷新)永遠不會停止。 所以當這個視圖再次加載多個(刷新)線程時執行

問題:viewDisappear停止(刷新)線程的最佳方法是什么?

嘗試並在viewDidDisappear cancelPerformSelectorsWithTarget方法。 更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM