Sie können eine CFRunLoopObserver
erstellen, die einen Block bei der Eingabe und dem Verlassen von Schleifen aufruft. Verwenden Sie CFRunLoopAddObserver
, um den Beobachter der Laufschleife hinzuzufügen, und CFRunLoopGetMain
, um die zu addierende Laufschleife zu erhalten.
ist hier ein ziemlich sinnlos Beispiel diese mit:
- (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);
}
Dieses einfach installiert einen Beobachter, die jeden Eintrag & Ausgang zur Laufschleife protokolliert. Sie können es als eine vollständige Anwendung in Xcode ausführen und sehen, wie oft die Laufschleife herum läuft.
Beachten Sie, dass CFRunLoopObserverCreateWithHandler
eine Referenz zurückgibt, die Sie besitzen. Wenn Sie den Beobachter entfernen, sind Sie für die Aufhebung der Zuordnung verantwortlich.
Danke, es ist genau das, was ich gesucht habe. – vilanovi