我使用後臺線程遞歸程序。爲了避免堆棧溢出,我使用計時器。但是我面對Timer + GCD的問題。起火後,定時器調用功能一次並停止。定時器與大中央調度
有小代碼。如果重要,我使用ARC。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),^
{
self.timer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(timerFunction) userInfo:nil repeats:YES];
[self.timer fire];
});
return YES;
}
-(void)timerFunction
{
NSLog(@"Timer Tick");
}
什麼問題?
對不起,我的英文。謝謝:)
您是否曾將定時器添加到runloop?並運行runloop?爲什麼你需要一個後臺線程讓計時器運行? – Wain
因爲我有很多函數調用自己在後臺(它被稱爲遞歸),並且我的堆棧在3000次調用後浮起,這就是爲什麼我要定時器:退出某些函數並重新啓動它。但是我的計時器沒有理由地停下來。 – IWantToKnow