第52条:别忘了NSTimer会保留其目标对象

  本条要点:(作者总结)

  计时器是一种很方便也很有用的对象。Foundation 框架中有个类叫做 NSTimer,开发者可以指定绝对的日期与时间,以便到时执行任务,也可以指定执行任务的相对延时时间。计时器还可以重复运行任务,有个与之相关联的 “间隔值”(interval)可用来指定任务的触发频率。比方说,可以每 5 秒轮询某个资源。

  计时器要和 “运行循环”(run loop)相关联,运行循环到时候会触发任务。创建 NSTimer 时,可以将其“预先安排”在当前的运行循环中,也可以先创建好,然后由开发者自己来调度。无论采用哪种方式,只有把计时器放在运行循环里,它才能正常触发任务。例如,下面这个方法可以创建计时器,并将其预先安排在当前循环中:

  + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)selector userInfo:(id)userInfo repeats:(BOOL)repeats

  用此方法创建出来的计时器,会在指定的间隔时间之后执行任务。也可以令其反复执行任务,直到开发者稍后将其手动关闭为止。target 与 selector 参数表示计时器将在哪个对象上调用哪个方法。

时间: 2024-08-10 00:06:33

第52条:别忘了NSTimer会保留其目标对象的相关文章

NSTimer会保留其目标对象

第52条:通过接口引用对象

应该优先使用接口而不是类来引用对象,考虑Vector的情况. List<Subscriber> subscribers = new Vector<Subscriber>(); Vector<Subscriber> subscribers = new Vector<Subscriber>(); 应该使用第一种方式,如果使用接口作为类型,程序将会更加灵活,当决定更换实现时,只需改变构造器中的类的名称(或者使用一个不同的静态工厂). 注意,如果原来的实现提供了某种

[编写高质量iOS代码的52个有效方法](十一)系统框架

[编写高质量iOS代码的52个有效方法](十一)系统框架 参考书籍:<Effective Objective-C 2.0> [英] Matt Galloway 先睹为快 47.熟悉系统框架 48.多用块枚举,少用for循环 49.对自定义其内存管理语义的容器使用无缝桥接 50.构建缓存时选用NSCache而非NSDictionary 51.精简initialize与load的实现代码 52.别忘了NSTimer会保留其目标对象 目录 编写高质量iOS代码的52个有效方法十一系统框架 先睹为快

《编写高质量iOS与OS X代码的52个有效方法》

一.熟悉Objective-C 1.了解Objective-C语言的起源 2.在类的头文件中尽量少引入其他头文件 3.多用字面量语法,少用与之等价的方法 4.多用类型常量,少用#define预处理指令 5.用枚举值表示状态.选项.状态码 二.对象.消息.运行期 6.理解"属性"这一概念 7.在对象内部尽量直接访问实例变量 8.理解"对象等同性"这一概念 9.以"类族模式"隐藏实现细节 10.在既有类中使用关联对象存放自定义数据 11.理解objc

编写高质量的iOS代码--Effective Objective-C 2.0 读书笔记

编写高质量的iOS代码--Effective Objective-C 2.0 读书笔记 这本书年初刷完,感觉不错,介绍了很多小点,都是平日不怎么关注的. 第1章 熟悉Objective-C 这章没什么好介绍 第1条:了解Objective-C语言的起源 第2条:在类的头文件中尽量少引入其他头文件 第3条:多用字面量语法,少用与之等价的方法 第4条:多用类型常量,少用#define预处理指令 要理解为啥要少用#define预处理指令. 然后具体用哪个, 自己定吧 第5条:用枚举表示状态.选项.状态

Effective Objecttive-C 2.0

中文: 编写高质量iOS与OS X代码的52个有效方法 整体评价: 书中提出了52条建议,如果都能遵守的话,对码代码还是很有帮助的.书中记录的有些东西,现在看有点老,不过很具有参考性.如果感觉飞时间的话,直接翻看每一章最后面的[要点]总结 我把52条,稍微整理了一下,也算是,自己的一些想法吧,就是写着玩的,参考下就完事. 第1条:了解Object-C语言的起源  -- 简单介绍,可以忽略的 第2条: 在类的头文件中尽量少引入其他头文件 -- .h文件中,尽量用@class,少用#import  

Effective objective-c 2.0阅读笔记

这本书非常的好,看完后,感触挺深,总结纪录一下,针对ios开发的备忘: 注:分类和原著有些不同,自己总结学习用的,仅供参考. 系统篇: 了解oc起源:继承c,由Smalltalk演化而来.动态语言,运行期决.需要熟悉c语言. 6.  理解变量属性 a.原子性 b.读写 c.内存管理语义 d.方法名 .尽量少用atomic .注意使用copy属性避免数据安全问题. 还有oc动态语言特性,硬编码问题.类内部不要直接访问变量. 7.  还是重复了上一篇:在对象内部尽量直接访问实例变量.a.快,没有派发

[crash详解与防护] NSTimer crash

前言: NSTimer会保留其目标对象,如果不加以注意,就会持有保留环,造成内存泄露. 一. NSTimer保留环介绍 Foundation框架中的NSTimer类,提供了在某个时间执行指定方法的功能,原型如下: + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(nullable id)userInfo repeat

iOS编写质量代码

这是一篇读书笔记,快速记录各种高效率编程的技巧和方法.这些方法是为了提升编码质量和效率,高质量代码利于后期的维护和更新,毕竟不能一份代码到永远. 由于是记录形式,当然不能把整篇内容都写下来,只记录关键性的内容,长期更新. 正文 Objective-C使用了消息机制代替调用方法. 区别:使用消息结构的语言,其运行时缩影执行的代码由运行环境来决定.而使用函数调用的语言,则又编译器决定. 头文件中少引用其他文件 在头文件中使用@Class 代替直接引用其他头文件 多使用字面量语法     NSNumb