autorelease探究(二)

2014-11-24 10:57:01 · 作者: · 浏览: 2
5.0f target:self selector:@selector(onTimerFired:) userInfo:nil repeats:NO];
[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;

casekCFRunLoopBeforeTimers:
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