2013-05-28 30 views

回答

21

您可以創建一個CFRunLoopObserver,它將在循環的入口和出口處調用一個塊。您使用CFRunLoopAddObserver將您的觀察者添加到運行循環,並使用CFRunLoopGetMain獲取要添加到的運行循環。

下面是使用這些部件的相當無意義例如:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    CFRunLoopObserverRef observer = CFRunLoopObserverCreateWithHandler(NULL, (kCFRunLoopEntry | kCFRunLoopExit), YES, 0, ^(CFRunLoopObserverRef observer, CFRunLoopActivity activity) 
    { 
     static unsigned long count = 0; 
     NSLog(@"activity %lu: %@", ++count, (activity & kCFRunLoopEntry ? @"Enter" : @"Exit")); 
    }); 
    CFRunLoopAddObserver(CFRunLoopGetMain(), observer, kCFRunLoopCommonModes); 
} 

這只是安裝它記錄每個條目&退出運行循環的觀察者。您可以在Xcode中將其作爲完整的應用程序運行,並查看運行循環執行多少次。

請注意,CFRunLoopObserverCreateWithHandler返回您自己的引用,如果您刪除了您負責解除分配的觀察者。

+0

謝謝,這正是我正在尋找的。 – vilanovi

相關問題