NSCache和RunLoop

NSCache *cache; cache.countLimit = 10;最多缓存10个数据。可以控制你的缓存。

位移枚举:

//位移枚举,一个参数可以传递多个值,观察位移枚举的第一个值,如果该枚举值!=0,可以默认传0做参数,效率最高,什么都不操作。

typedefNS_OPTIONS(NSInteger, FBTActionType)

{

FBTActionTypeTop =1<<0,//1左移0位为1 1*2^0 = 1

FBTActionTypeBottom=1<<1,// 1*2^1 = 2

FBTActionTypeLeft=1<<2,//1*2^2 = 4

FBTActionTypeRight=1<<3,//1*2^3 = 8

//按位与& 1&1 == 1,1&0 = 0,只要有0就是0

//按位或|只要有1就是为1.

};

runLoop作用:保持程序的持续运行,处理APP中的各种事件(触摸,定时器,selector事件)节省CPU资源,提高程序性能;该做事情的时候做事情,该休息休息。死循环。任务一直在执行。Main函数中有UIApplicationMain中有RunLoop一直在运行。Runloop和主线程相关。

主线程的RunLoop已经自动创建好,子线程的RunLoop需要主动创建。[NSRunLoopcurrentRunLoop]获取当前线程的RunLoop对象。每条线程都有唯一与之对应的RunLoop对象。主线程的RunLoop [NSRunLoopmainRunLoop]

[NSRunLoopmainRunLoop].getCFRunLoop==CFRunLoopGetMain()

Core Foundation 中有5个关于RunLoop的类 .CFRunLoopModeRef代表RunLoop的运行模式。

NSTimer*timer = [NSTimertimerWithTimeInterval:2.0target:selfselector:@selector(run)userInfo:nilrepeats:YES];

//runLoop的运行模式会影响到你的触碰操作例如拖拽。

[[NSRunLoopcurrentRunLoop]addTimer:timerforMode:NSDefaultRunLoopMode];//拖拽的时候不工作,默认。

[[NSRunLoopcurrentRunLoop]addTimer:timerforMode:UITrackingRunLoopMode];//界面追踪模式。

[[NSRunLoopcurrentRunLoop]addTimer:timerforMode:NSRunLoopCommonModes];//整合了UITrackingRunLoopMode和NSDefaultRunLoopMode占位,标签。子线程创建的RunLoop必须要手动创建。[NSRunLoop currentRunLoop]

- (void)run{

NSLog(@"run--%@--%@",[NSThreadcurrentThread],[NSRunLoopcurrentRunLoop].currentMode);

}

你可能感兴趣的:(NSCache和RunLoop)