Runloop 新的看法

1.Runloop --运行循环

Runloop能做的事情:

1.让程序一直运行

2.处理触摸事件:(UI交互,闹钟,网络等等)

3.处理渲染事件:(每一次渲染的时候,重新加载所有的屏幕上的点)

NSTimer *timer = [NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateTimer) userInfo:nil repeats:YES];

// NSDefaultRunLoopMode;  一般处理闹钟,网络

// NSRunLoopCommonModes   处理用户UI交互(很好的处理时钟,网络在UI交互卡顿不动的情况)

[[NSRunLoop currentRunLoop]addTimer:timer forMode:NSDefaultRunLoopMode];

//    [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateTimer) userInfo:nil repeats:YES];//自动添加到运行池

//更新UI是在主线程加载的,加载网络是在子线程加载的

如果更新UI的时候也是个很耗时间的操作的时候,如何解决?

1.第一次加载以后,可以将数据(图片,文字,头像)保存到本地,第二次直接通过本地加载。

2.针对多个图片或者cell 很耗时的时候,可以通过Runloop每次加载一个,这样会大大节约时间

如何解决:

1.通过数组,装代码

2.返回cell数据源,不加载图片(加载图片的代码放到数组)

3.监听RunLoop(通过CFRunLoop)  ---一次循环就从数组拿代码执行

OC的监听方法有:通知,代理,KVO

C语言:通过函数指针监听

//定义一个函数监察指针,回调函数

static void callBack()

{

//处理回调方法

}

//添加runLoop

-(void)defeafutRunLoopObsever

{

//获取当前的runLoop(C语言的)

CFRunLoopRef runLoop = CFRunLoopGetCurrent();

//定义一个上下文

CFRunLoopObserverContext context = {

0,

(__bridge void *)(self),//观察者(self)要桥接

&CFRetain,

&CFRelease,

NULL,

};

//定义一个观察者

static CFRunLoopObserverRef defaultModleObesver;

//创建观察者

defaultModleObesver = CFRunLoopObserverCreate(NULL, kCFRunLoopBeforeWaiting, YES, NSIntegerMax -999, &callBack, &context);

//添加当前RunLoop观察者

CFRunLoopAddObserver(runLoop, defaultModleObesver, kCFRunLoopCommonModes);

//c语言对于使用creat/new/copy 记得释放内存

CFRelease(defaultModleObesver);

}

时间: 2024-10-20 00:25:26

Runloop 新的看法的相关文章

浅谈我对机器学习和文本挖掘的新的理解

转眼间已经工作了一段时间了,回想起2014年初学机器学习时的付出.艰苦和努力,感觉都是值得的.从现在往前看,我是沿着“计算机->统计学->数据分析->数据挖掘->机器学习->文本挖掘”的路径走过来的,我觉得这个思路还是属于比较传统的进阶方法,学习的内容有不少的冗余,但相对来说更稳健一些.今天写这篇文章的目的是想总结一下我最近关于文本挖掘的工作体会以及我对机器学习的一些新的看法,只为探讨,还望与大家共勉. 我先来说一些文本挖掘的东西.似乎大家做Text Mining的不太多,可

设计模式之原型模式(Prototype)

1.初识原型模式 大家都知道连锁机构是现在灰常流行的商业模式,比如咖啡之翼,那么假设咖啡之翼要在长春新建立一个分店,所经营的产品和以前在其他的城市已经存在的店经营的产品差不多,那么面向对象开发的角度怎么解决这个问题呢?难道要重新的实例化一个咖啡之翼的店??这显然不太好吧,咖啡之翼里面经营的产品(假设是属性吧)都需要重新写,这就是在做大量的重复工作啊,这显然是不符合OO开发思想的.遇到这样的情况,并不是重新建立一个类来解决这样的问题,而是通过设计模式中的"原型模式"来解决这种问题.是这种

js知识点分享

原型对象 在JavaScript 中,每当定义一个对象(函数)时候,对象中都会包含一些预定义的属性.其中函数对象的一个属性就是原型对象 prototype.注:普通对象没有prototype,但有__proto__属性. 原型对象其实就是普通对象(Function.prototype除外,它是函数对象,但它很特殊,他没有prototype属性(前面说道函数对象都有prototype属性)).看下面的例子: function f1(){}; console.log(f1.prototype) //

一、构建之法读后感

这学期的软件测试课程多加了<构建之法>这本书,这学期利用自己的课余时间学了这本书,感觉受益匪浅. 对于这本书可以简单地有两个词语来概括:"专业"."接地气". 这本书的开头就是给我解释什么事软件.什么是软件工程.上大学将近三年,说实话还没有一次真正的去了解过什么是软件,什么是软件工程,说来还是有些惭愧的. 首先,这是一本全景式图书,会让你更了解这个行业,能让毕业生在对行业从陌生到熟悉的过程中,较少地感到惊讶和出乎意料,这是一本与现实接轨的教材. 其次,这

《构建之法读后感》

这是一本全景式的书,会让你更了解这个行业,能让毕业生在对行业从陌生到熟悉的过程中,较少地感到惊讶和出乎意料,这是一本与现实接轨的教材. 是一本最佳实践式的书,涵盖了科学.健康的软件工程开展中的每个方面,介绍了种种方法论,但不是高高在上.纲领性的方法论,而是方法论的最佳 实践,确实可用,拿来就用.本书在介绍方法论的同时,居然会介绍方法论不适用的场景,介绍方法论在现实中是怎样跑偏的,这就好像讲下棋,“这 样走,之后的发展会怎样怎样,所以不行”,怎样做会对,怎样做会错——什么叫宏观视角?什么叫最佳实践

我的第一篇博客——————java语言程序设计随笔

java新学期的感想理解 随着计算机技术的进步,计算机在很多方面都改变着人们的工作,生活与娱乐的方式.亚马逊,淘宝等电子商务网站为人们提高了便捷的购物方式:微信,微薄等为人们提供了新的社会交往及交流信息的方式.上学期是我们第一次接触java这门课程,通过一个学期的了解与学习,对这门课程有了新的看法与兴趣.同时也知道了那些平常运行的看似普通的界面背后却是由一行行程序构成,这些短短的程序都有着各自的作用,一个符号.一个拼写错误,这些错误对程序员来说都是不能犯的.上学期我们记忆最深刻的一定是GUI界面

从历史的角度谈变化

首先,个人非常鄙视崇洋媚外,或者固步自封的态度,这里说历史,也没有孰优孰劣的说法.一个是中国,另一个就是欧美了.历史也不过是些记录,你相信么?我反正是不信,把历史比作一头有生命的野兽,我只能看到真相的骨骼,再说肌肉纹理,那是模糊不清的.在一个月前,我还抱着对gcd的偏见,对欧美政治制度的推崇,我不得不说,我不是我,真正的我不知在哪里.历史是胜利者的荣耀,失败者的耻辱记录,你不觉得么?国民党曾经在大陆上实行白色恐怖,多少此类题材,那么,这是真的么?历史只能是一个参考. 从中国的历史来看,思想经历了

美国政府关于Google公司2013年度的财务报表红头文件

请管理员移至新闻版块,谢谢! 来源:http://www.sec.gov/ 财务报表下载↓ 此文仅作参考分析. 10-K 1 goog2013123110-k.htm FORM 10-K UNITED STATES SECURITIES AND EXCHANGE COMMISSION Washington, D.C. 20549     FORM 10-K (Mark One)       ý ANNUAL REPORT PURSUANT TO SECTION 13 OR 15(d) OF TH

6.23随笔

原型对象 在JavaScript 中,每当定义一个对象(函数)时候,对象中都会包含一些预定义的属性.其中函数对象的一个属性就是原型对象 prototype.注:普通对象没有prototype,但有__proto__属性. 原型对象其实就是普通对象(Function.prototype除外,它是函数对象,但它很特殊,他没有prototype属性(前面说道函数对象都有prototype属性)).看下面的例子: function f1(){}; console.log(f1.prototype) //