
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface RunloopListen : NSObject
+ (void)listen;
@end
NS_ASSUME_NONNULL_END
RunloopListen.m
#import "RunloopListen.h"
@implementation RunloopListen
+ (void)listen{
CFRunLoopObserverContext context = {0, (__bridge void *)(self), NULL, NULL, NULL};
CFRunLoopObserverRef observer = CFRunLoopObserverCreate(kCFAllocatorDefault, kCFRunLoopAllActivities, YES, 0, &myRunLoopObserver, &context);
NSRunLoop *myRunLoop = [NSRunLoop currentRunLoop];
CFRunLoopRef cfRunLoop = [myRunLoop getCFRunLoop];
CFRunLoopAddObserver(cfRunLoop, observer, kCFRunLoopDefaultMode);
}
void myRunLoopObserver(CFRunLoopObserverRef observer, CFRunLoopActivity activity, void *info)
{
switch(activity)
{
case kCFRunLoopEntry:
NSLog(@"run loop entry");
break;
case kCFRunLoopBeforeTimers:
NSLog(@"run loop before timers");
break;
case kCFRunLoopBeforeSources:
NSLog(@"run loop before sources");
break;
case kCFRunLoopBeforeWaiting:
NSLog(@"run loop before waiting -----------------------");
break;
case kCFRunLoopAfterWaiting:
NSLog(@"run loop after waiting -----------------------");
break;
case kCFRunLoopExit:
NSLog(@"run loop exit");
break;
default:
break;
}
}
@end
在swift项目中使用
参考博客
iOS viewDidLoad 中创建的局部变量释放时机
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)