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);
}