-
Effective Objective-C 2.0 总结(六)
块与大中枢派发第 37 条:理解 “块” 这一概念块可以实现闭包。块的基础知识块用 “” 符号来表示,后面跟着一对花括号,括号里面是块的实现代码。块其实就是个值,而且自有其相关类型,可以赋值给变量;块类型的语法和函数指针类似。 ^{ //block implementation herer } //这里定义了名为someBlock 的变量 //块类型的语法结构如下 //return_type (^block_name)(parameters) void...…
-
Effective Objective-C 2.0 总结(七)
系统框架第 47 条:熟悉系统框架框架:将一系列代码封装成动态库,并在其中放入描述其接口的头文件。平时我们第三方框架用的是静态库,因为iOS 应用程序不允许其中包含动态库。Foundation、CoreFoundation 框架平时用的比较多,“无缝桥接” 可以将这两种框架的对象平滑转换。还有很多系统库我们平时都应该尽量去用它们,而不是重新实现它们已经实现的功能:CFNetworkCoreAudioAVFoundationCoreDataCoreText许多系统框架都可以直接使用。其中最重...…
-
Effective Objective-C 2.0 总结(五)
内存管理[TOC]第 29 条:理解引用计数引用计数工作原理Objective-C 语言使用引用计数来管理内存,每个对象都有个可以递增递减的计数器,用以表示当前有多少个事物想令此对象继续存活下去。NSObject 协议声明下面三个方法用于操作计数器,以递增或递减其值:retain 递增保留计数release 递减保留计数autorelease 待稍后清理 “自动释放池” 时,再递减保留计数在调用release 之后,对象所占的内存可能会被回收,这样子在调用对象的方法就可能使程序...…
-
Effective Objective-C 2.0 总结(四)
协议与分类[TOC]第 23 条:通过委托与数据源协议进行对象间通信Objective-C 可以使用 “委托模式”(Delegate pattern)的编程设计模式来实现对象间的通信:定义一套接口,某对象若想接受另一个对象的委托,则需遵从此接口,以便成为其 “委托对象”(delegate)。Objective-C 一般利用 “协议” 机制来实现此模式。定义协议: @protocol EOCNetworkingFetcherDelegate @optional - (void)n...…
-
Effective Objective-C 2.0 总结(三)
接口与 API 设计[TOC]第 15 条:用前缀避免命名空间冲突如果发生命名冲突(naming clash),那么应用程序的链接过程就会出错,因为出现了重复符号。应该为所有名称都加上适当的前缀,最好是三个字母以上做前缀,因为苹果宣称其保留使用所有 “两字母前缀”。在类的实现文件所有的纯C 函数及全局变量,也是容易命名冲突的,在编译好的目标文件中,这些要算做 “顶级符号”(top-level symbol)。如果自己的代码准备再发布为程序供他人开发应用程序所用,自己的代码以及自己引用到的第...…
-
Effective Objective-C 2.0 总结(二)
对象、消息、运行期第 6 条:理解 “属性” 这一概念“对象”(object)就是 “基本构造单元”(building block),开发者可以通过对象来存储并传递数据,在对象直接传递数据并执行任务的过程就叫做 “消息传递”(Messaging)。如果对象布局在编译器就固定了,访问变量时,编译器会使用 “偏移量”(offset)来计算,这个偏移量是 “硬编码”(hardcode),表示该变量距离存放对象的内存区域的起始地址有多远。 存在一个问题:如果代码使用了编译期计算出来的偏移量,那么修...…
-
Effective Objective-C 2.0 总结(一)
熟悉Objective-C前言最经买了本编写高质量代码 改善Objective-C程序的61个建议,拿到手看了下目录感觉内容比这本52个有效方法更深点,之前的这本也是浅浅的看过,具体讲什么也不是很记得了,所以打算先重新看下这本52个有效方法,然后再来拜读新入手的这本。这里准备记录下Effective Objective-C 2.0 编写高质量iOS与OS X 代码的52个有效方法这本提到的知识点。第 1 条:了解Objective-C 语言的起源Objective-C 在C 语言基础上添加...…
-
iOS Security 安全白皮书(一)
[TOC]前言iOS 安全白皮书是苹果官方提供的,里面有苹果对于安全设计的一些细节介绍,阅读可以更佳理解苹果系统的构造,虽然不能说是看了能很深的明白其设计思路,但是可以增加知识,为以后做安全方面打下基础官方原文地址 这个是官方的文档,英文好的同学强烈建议看原文档,个人经验来说,看英文跟看中文完全是两种不同的体验,但是看英文会更加有趣更加深刻17年白皮书翻译,我是看到巧神推荐才知道有iOS 安全白皮书的,以前对于白皮书的概念还是高中的练习辅导呢,那时候上网找了下有没中文文档,很遗憾没有找到...…
-
NSTimer 知识点
[TOC]NSTimer 是什么定时器 一般都是用来做一些周期性的任务使用遇到什么问题内存释放问题、定时器失效问题为什么会出现这些问题内存释放问题当定时器被加到run loop 生效的时候,run loop 会强引用这个定时器对象(retain),然后定时器又会强引用这个Target 对象,这样子就会导致这个定时器一直存在,这个Target 对象一直存在,导致一直释放不了单纯将NSTimer置为nil,是不能使定时器失效的,runloop 已经强引用这个timer 了,要使得定时器失效需要...…
-
Effective Objective-C 2.0 总结(一)
前言阅读书籍全名Effective Objective-C 2.0 编写高质量iOS与OS X 代码的52个有效方法最经买了本编写高质量代码 改善Objective-C程序的61个建议,拿到手看了下目录感觉内容比这本52个有效方法更深点,之前只是浅度这本,具体讲什么也不是很记得了,所以打算先重新看下这本52个有效方法,然后再来拜读新入手的这本。这里准备记录下Effective Objective-C 2.0 编写高质量iOS与OS X 代码的52个有效方法这本提到的知识点。第一章 熟悉Ob...…