当在主线程刷新页面过于频繁时,容易造成页面卡顿,这时候需要监听主线程的RunLoop,在RunLoop空闲时再去处理UI事件,例如股票类的实时刷新数据。
#import "ViewController.h"
#import "SKRunLoop.h"
@interface ViewController () <SKRunLoopDelegate>
/* runloop */
@property (nonatomic, strong) SKRunLoop * runLoop;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.runLoop.delegate = self;
// 在需要的时候,唤醒runloop,比如:当socket 1s推送一次数据并刷新界面,socket回调方法里面可添加
[self.runLoop startObserverRefWithTag:1];
}
#pragma mark - runLoop回调
-(void)ResultObserverRefTag:(NSInteger)tag{
if (tag == 1) {
//处理事件
}
}
//也可使用单例方法
-(SKRunLoop *)runLoop{
if (!_runLoop) {
_runLoop = [[SKRunLoop alloc] init];
}
return _runLoop;
}
@end
网友评论