NSTimer你真的會用了嗎??
阿新 • • 發佈:2019-01-04
- (void)applicationDidBecomeActive:(UIApplication *)application { [NSThread detachNewThreadSelector:@selector(testTimerSheduleToRunloop1) toTarget:self withObject:nil]; } // 測試把timer加到不執行的runloop上的情況 - (void)testTimerSheduleToRunloop1 { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSLog(@"Test timer shedult to a non-running runloop"); SvTestObject *testObject4 = [[SvTestObject alloc] init]; NSTimer *timer = [[NSTimer alloc] initWithFireDate:[NSDate dateWithTimeIntervalSinceNow:1] interval:1 target:testObject4 selector:@selector(timerAction:) userInfo:nil repeats:NO]; [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode]; // 開啟下面一行輸出runloop的內容就可以看出,timer卻是已經被新增進去 //NSLog(@"the thread's runloop: %@", [NSRunLoop currentRunLoop]); // 開啟下面一行, 該執行緒的runloop就會執行起來,timer才會起作用 //[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:3]]; [testObject4 release]; NSLog(@"invoke release to testObject4"); [pool release]; } - (void)applicationWillResignActive:(UIApplication *)application { NSLog(@"SvTimerSample Will resign Avtive!"); }