我有一個關於NSTimer的問題,我在.h文件中聲明並稍後在方法中設置。但是這個方法會被稱爲多於一個,所以NSTimer在同一個名字下運行多次。Objective-c iPhone NSTimer唯一標識符
現在我的問題是,是否有可能設置標記/ ID或任何所以我可以使NSTimer與正確的標記/ ID無效?
感謝您的幫助!
我有一個關於NSTimer的問題,我在.h文件中聲明並稍後在方法中設置。但是這個方法會被稱爲多於一個,所以NSTimer在同一個名字下運行多次。Objective-c iPhone NSTimer唯一標識符
現在我的問題是,是否有可能設置標記/ ID或任何所以我可以使NSTimer與正確的標記/ ID無效?
感謝您的幫助!
這個問題很久以前就問過,但因爲我今天有同樣的需要,這是我的解決方案:
// set timer
timer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(whateverMethod)
userInfo:@"timer1"
repeats:YES];
要使相同的定時器無效,請檢查其userInfo字符串:
// invalidate timer
if ([[timer userInfo] isEqual:@"timer1"])
[timer invalidate];
您只需保存對您創建並正在運行的NSTimer的引用 - 並僅使用此引用即可。
如果您正在創建多個NSTimers,並且您在意獨立處理它們,則需要獨立存儲它們。如果有一個固定的數字,只需創建足夠的變量並適當地命名它們。或者將它們保存在一個數組中(然後通過索引鍵入)。或者把它們放在一個字典中,用一些字符串名稱作爲鍵。
你上面的措辭(「以同樣的名義運行」)對我有點擔心。定時器有一些敏感的內存處理要求。如果您想要更廣泛的設計幫助,請編輯您的問題,詳細說明您正在做什麼。
奧克,我現在有下面的代碼。但是有沒有辦法設置一個唯一的ID /標籤,所以我可以在稍後的時刻使計時器失效。這是因爲計時器方法會調用更多的。 (其動畫圖像/按鈕)
MainViewController.m
- (void)timerMethod {
NSTimer *daTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(animations:) userInfo:nil repeats:YES];
}
** [timer userInfo] **返回時的nil值ViewController。 – 2016-02-18 10:56:56