2010-10-19 58 views
3

如果我的UIView的子類,這樣做:iPhone cancelPerformSelectorWithTarget不工作

[self performSelector:@selector(doSomething) withObject:nil afterDelay:5]; 

然後取消像這樣(我試過兩個版本):

[[NSRunLoop currentRunLoop] cancelPerformSelectorsWithTarget:self]; 
//[[NSRunLoop mainRunLoop] cancelPerformSelectorsWithTarget:self]; 

的 「DoSomething的」方法仍然被調用。我究竟做錯了什麼?

+1

+1我想我最近也注意到了這一點;我無法讓它工作,所以我最終使用了一個不重複的'NSTimer'。 :P – 2010-10-19 17:56:34

+0

但這不一定與NSTimer有關。它只是取消一個請求... – sol 2010-10-19 18:03:06

+0

你確定兩個方法在同一個線程上運行嗎?因爲如果他們不那麼他們針對不同的運行循環。 – DarkDust 2010-10-19 18:06:34

回答

1

在NSObject類參考:

cancelPreviousPerformRequestsWithTarget:選擇器:對象:

取消執行以前與 performSelector註冊請求:withObject:afterDelay :.

用途:

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(doSomething) object:nil]; 

希望這有助於。