2
我已使用NSTimer類別創建具有https://github.com/jivadevoe/NSTimer-Blocks的塊的計時器。我試圖使我的方法之一在計時器被解僱之前使計時器失效,但它不起作用。我的代碼如下:使用尚未被觸發的塊使NSTimer失效:Objective-C
-(void)addQuestionView
{
if([resizeTimer isValid])
[resizeTimer invalidate];
.
.
.
.
.
[webView loadHTMLString:questionHtmlStr
baseURL:nil];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
resizeTimer = [NSTimer scheduledTimerWithTimeInterval:4.0 block:^{
//calculating height based on content
//changing webView's contsraints
} repeats:NO];
.
//long process
//animation
.
}
如在上面的代碼中,如果稱爲第一時間addQuestionView方法,計時器將設置後4秒運行。如果立即調用addQuestionView,說1秒後,我想resizeTimer無效,以避免在計算高度和更改webView約束的任何不當行爲。我通過NSLogging檢查了一些值,它沒有失效,並被調用兩次。任何人都有解決方案,那麼請幫助我。
謝謝!
你有沒有檢查了'invalidate'是在其上安裝定時器同一線程發送? – clemens
@Rob。謝謝你指出我。 「webViewDidFinishLoad在舊計時器失效/啓動之前再次被調用。」 - 同樣的事情發生。 – iAkki