iOS RunLoop 监听

当在主线程刷新页面过于频繁时,容易造成页面卡顿,这时候需要监听主线程的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

查看Demo:SKRunLoopDemo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容