
对象之间的通讯
对象之间需要通信,这也是所有软件的基础。再非凡的软件也需要通过对象通信来完成复杂的目标。本章将深入讨论一些设计概念,以及如何依据这些概念来设计出良好的架构。 Blocks Blocks 是 Objective-C 版本的 lambda 或者...
对象之间需要通信,这也是所有软件的基础。再非凡的软件也需要通过对象通信来完成复杂的目标。本章将深入讨论一些设计概念,以及如何依据这些概念来设计出良好的架构。 Blocks Blocks 是 Objective-C 版本的 lambda 或者...
code organization is a matter of hygiene (代码组织是卫生问题) 我们十分赞成这句话。清晰地组织代码和规范地进行定义, 是你对自己以及其他阅读代码的人的尊重。 利用代码块 一个 GCC 非常模糊的特性...
空格 缩进使用 4 个空格。 永远不要使用 tab, 确保你在 Xcode 的设置里面是这样设置的。 方法的大括号和其他的大括号(if/else/switch/while 等) 总是在同一行开始,在新起一行结束。 推荐: if (user....
当你定义你自己的 NSNotification 的时候你应该把你的通知的名字定义为一个字符串常量,就像你暴露给其他类的其他字符串常量一样。你应该在公开的接口文件中将其声明为 extern 的, 并且在对应的实现文件里面定义。 因为你在头文件...
在 Objective-C 的世界里面经常错过的一个东西是抽象接口。接口(interface)这个词通常指一个类的 .h 文件,但是它在 Java 程序员眼里有另外的含义: 一系列不依赖具体实现的方法的定义。 在 Objective-C 里...
虽然我们知道这样写很丑, 但是我们应该要在我们的 category 方法前加上自己的小写前缀以及下划线,比如- (id)zoc_myCategoryMethod。 这种实践同样被苹果推荐。 这是非常必要的。因为如果在扩展的 category...
类名 类名应加上 三 个大写字母作为前缀(两个字母的为 Apple 的类保留)。虽然这个规范看起来难看,但是这样做是为了减少 objective-c 没有命名空间所带来的问题。 一些开发者在定义 Model 对象时并不遵循这个规范(对于 C...
通用的约定 尽可能遵守 Apple 的命名约定,尤其是和 内存管理规则 (NARC) 相关的地方。 推荐使用长的、描述性的方法和变量名 推荐: UIButton *settingsButton; 不推荐: UIButton *setBut;...
条件语句体应该总是被大括号包围来避免错误,即使可以不用(比如,只有一行内容)。这些错误包括多加了第二行,并且误以为它是 if 语句体里面的。此外,更危险的可能是,如果把 if 语句体里的一行注释掉了,之后的一行代码会不知不觉成为 if 语句...
禅与 Objective-C 编程艺术 这本书的观点是代码不仅是可以编译的,同时应该是 “有效” 的。好的代码有一些特性:简明,自我解释,优秀的组织,良好的文档,良好的命名,优秀的设计以及可以被久经考验。本书的一个理念是是代码的清晰性优先于...
Objective-C,是扩充C的面向对象编程语言。它非常小巧实用,并且完全兼容C语言。虽然Objective-C是C的超集,但它不是C的基本类型为第一级的对象。 Objective-C与C++的差别 C++语言支持多重继承,而Object...
Objective-C 2.0提供了一个可选的垃圾收集器。在向后兼容模式中,Objective-C运行时会将引用计数操作,例如”retain”与”release”变为无操作。当垃圾收集启用时,...
在Objective-C的设计中,一个主要的考虑即为大型代码框架的维护。结构化编程的经验显示,改进代码的一种主要方法即为将其分解为更小的片段。Objective-C借用并扩展了Smalltalk实现中的”分类”概念,...
Objective-C允许对一个对象发送消息,不管它是否能够响应之。除了响应或丢弃消息以外,对象也可以将消息转发到可以响应该消息的对象。转发可以用于简化特定的设计模式,例如观测器模式或代理模式。 Objective-C运行时在Object中...
类似于Smalltalk,Objective-C具备动态类型:即消息可以发送给任何对象实体,无论该对象实体的公开接口中有没有对应的方法。对比于C++这种静态类型的语言,编译器会挡下对(void*)指针调用方法的行为。但在Objective-...