转:http://my.oschina.net/u/936286/blog/159490
- ( BOOL )application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions |
02 | { |
03 | self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; |
04 | |
05 | //用NSObject的方法创建一个多线程 |
06 | [self performSelectorInBackground:@selector(multiThread) withObject:nil]; |
07 | |
08 | self.window.backgroundColor = [UIColor whiteColor]; |
09 | [self.window makeKeyAndVisible]; |
10 | return YES; |
11 | } |
12 | - ( void )multiThread |
13 | { |
14 | NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; |
15 | if (![NSThread isMainThread]) { |
16 | |
17 | // 第1种方式 |
18 | //此种方式创建的timer已经添加至runloop中 |
19 | // [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(timerAction) userInfo:nil repeats:YES]; |
20 | //保持线程为活动状态,才能保证定时器执行 |
21 | // [[NSRunLoop currentRunLoop] run];//已经将nstimer添加到NSRunloop中了 |
22 | |
23 | //第2种方式 |
24 | //此种方式创建的timer没有添加至runloop中 |
25 | NSTimer *timer = [NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(timerAction) userInfo:nil repeats:YES]; |
26 | //将定时器添加到runloop中 |
27 | [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode]; |
28 | [[NSRunLoop currentRunLoop] run]; |
29 | NSLog(@ "多线程结束" ); |
30 | } |
31 | [pool release]; |
32 | } |
33 |
34 | - ( void )timerAction |
35 | { |
36 | //定时器也是在子线程中执行的 |
37 | if (![NSThread isMainThread]) { |
38 | NSLog(@ "定时器" ); |
39 | } |
40 | } |