0
又回到了主線程我有一個像NSTimer
定義:從的NSTimer
[NSTimer scheduledTimerWithTimeInterval:self.speed target:self selector:@selector(displayTextOverTime:) userInfo:nil repeats:YES];
displayTextOverTime
顯示一些文本的方法,那麼一旦顯示文本的最後一塊是無效它的計時器,並要求處理的另一種方法(其本身可能需要啓動NSTimer
來顯示文本)。
有沒有一個標準的方法來做這種事情?我原來的做法是直接調用另一個方法,但是這讓我有些奇怪的行爲,我嵌套了NSTimer
(它永遠不會死,因爲即使它們失效並且不會再循環,它們不是'完成'的,因爲它們內部的計時器仍在運行......或者某些東西?),這不是我想要的。有沒有什麼方法可以說「調用這個方法,但是在NSTimer
以外」呢,就像回到主線程一樣?
具體來說,我看到更多的定時器被殺害比開始(我有一個方法殺死任何傳遞的定時器,所以我可以記錄它被殺死時)。
有'NSObject'方法['performObjectOnMainThread:withObject:waitUntilDone:'](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference html的#// apple_ref/DOC/UID/20000050-CJBEHAEF)。 – user1118321
1.創建可重複計時器並沒有意義,然後在每次調用時使其無效。 2.你可以調用performSelector:afterDelay,延遲時間爲零 - 該方法將在主循環的下一個循環中運行。 – EricS
對於EricS,我不會在每次調用時都使其無效。相反,我在說:「每X毫秒調用一次這個方法,直到它讓你知道它已經完成,然後每X毫秒調用一次該方法,直到它讓你知道它已經完成」。每次以簡單的閱讀速度顯示文本一個單詞,然後獲取更多文本(如果存在),然後再一次顯示一個單詞。 – Jenny