[runloop addTimer:timer forMode:NSRunLoopCommonModes];
CFRunLoopObserverContext context = {
0,
self,
NULL,
NULL,
NULL
};
CFRunLoopObserverRef observerRef = CFRunLoopObserverCreate(kCFAllocatorDefault, kCFRunLoopAllActivities, YES, 0, &runloopObserverCallback, &context);
CFRunLoopAddObserver([runloop getCFRunLoop], observerRef, kCFRunLoopCommonModes);
[runloop run];
CFRunLoopRemoveObserver([runloop getCFRunLoop], observerRef, kCFRunLoopCommonModes);
CFRelease(observerRef);
}
static void runloopObserverCallback(CFRunLoopObserverRef observer, CFRunLoopActivity activity, void *info)
{
CFRunLoopActivity currentActivity = activity;
switch (currentActivity) {
casekCFRunLoopEntry:
NSLog(@"kCFRunLoopEntry \n");
break;
NSLog(@"kCFRunLoopBeforeTimers \n");
break;
casekCFRunLoopBeforeSources:
NSLog(@"kCFRunLoopBeforeSources \n");
break;
casekCFRunLoopBeforeWaiting:
NSLog(@"kCFRunLoopBeforeWaiting \n");
break;
casekCFRunLoopAfterWaiting:
NSLog(@"kCFRunLoopAfterWaiting \n");
break;
casekCFRunLoopExit:
NSLog(@"kCFRunLoopExit \n");
break;
default:
NSLog(@"Activity not recognized!\n");
break;
}
}
--------------------------------------------------
Jason Lee @ Hangzhou
2012.08.15
作者:jasonblog