因此,无论是否多态,Objective-C总会在运行时找到要执行的方法,而重要的工作就由“运行时组件”来完成。运行时组件包含所有内存管理方法,本质上是一个动态库。
Objective-C 是C 的超集,可以使用用C 编写的函数。了解C 的内存模型将有助于您了解Objective-C 的引用计数机制。
Objective-C对象占用的内存是在堆空间中分配的,在栈帧中分配的指针用来指向内存地址。指针本身的大小在32 位架构上为4 字节,在64 位架构上为8 字节。 Objective-C 运行时组件将对象的内存管理抽象为引用计数。
没有* 的Objective-C 变量不是对象。它们可能是基本类型或C 结构。内存是在栈空间中分配的。
第2条:头文件应尽可能少地引入其他头文件。
Objective-C 使用头文件和实现文件来分隔类的声明和实现。当一个对象引用另一个对象时,头文件中尽量不要引入其他头文件,因为添加头文件依赖会增加编译时间。正确的做法是在头文件中使用@class,前向声明,在使用cpp时只导入需要的头文件,这样也解决了交叉引用编译问题。
Objective-C协议(proctocol)不可避免地要导入头文件。通常建议协议有一个单独的头文件。委托协议是个例外,它只有与接受它的类结合起来才有意义。
第3 项:更频繁地使用文字语法,更少地使用等效方法。例如,NSString 应该尝试使用字符串文字进行赋值。
Objective-C 使用文字语法来减少代码长度并使其更易于阅读。
对于文字值,NSNumber 可以使用@x 或@(x)。
文字数组,NSArray,可以使用@[o1, o2.]。
文字字典,NSDictionary,可以使用@{k1:v1, k2:v2.}。
第4 项:多使用类型常量,少使用#define 预处理指令。
如果预处理指令具有相同的名称,则可以替换它们。推荐使用static constvar=x;
声明为static意味着它只在定义该变量的编译单元中可见。如果再次声明const,编译器将不会创建外部符号,而是将其替换为常量值(如预处理器指令)。
对于公共常量,可以使用extern 并将其放入全局符号表中。
第5项,使用枚举来表示状态和选项。
枚举使我们更容易理解值的含义,并且代码更易于阅读和维护。
【(一)目标概述】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
这看起来很有深度! 必须看看作者想达成的目标是什么。
有13位网友表示赞同!
“目标”这个词很有吸引力,让人好奇它到底指向哪里。
有14位网友表示赞同!
希望这个文章能把我带向一个全新的认知视角。
有9位网友表示赞同!
喜欢标题简洁明了,直接点出文章的核心内容。
有5位网友表示赞同!
作者会用什么样的语言来阐述自己的目标呢?期待展开阅读。
有7位网友表示赞同!
我很好奇“客观”的目标是什么样的形式,会不会与我的想法有所不同?
有17位网友表示赞同!
“客观”这词很有意思,说明文章的内容应该是比较中立的。
有12位网友表示赞同!
希望这篇文字能引出一些新的思维方向
有17位网友表示赞同!
有些时候目标确实需要清晰的定义才能真正实现。
有5位网友表示赞同!
标题让人产生思考:什么 constitutes an objective?
有12位网友表示赞同!
"一" 字的使用很有意思, 暗示这可能是一个基础或起点。
有9位网友表示赞同!
读这本书可以让我对 "OBJECTIVE" 这个词有更深的理解吗?
有19位网友表示赞同!
期待作者能用生动的例子来阐述目标的意义。
有9位网友表示赞同!
文章会不会分析不同视角下目标的不同定义呢?
有15位网友表示赞同!
目标是通往成功的关键,希望这篇文字能够给我一些指引。
有13位网友表示赞同!
"Objective" 作为词语本身就带有强烈的冲击力 - 它代表着一种态度和追求。
有20位网友表示赞同!
期待文章能探讨目标的设定与实现如何平衡?
有15位网友表示赞同!
也许这篇文字能够让我重新审视自己的目标?
有17位网友表示赞同!