Programming with Objective-C 翻译计划(1)--- 介绍

关于 Objective-C

当你编写 OS X 和 iOS 软件时,Objective-C 将是你主要使用的语言。它对 C 语言进行了拓展,并提供了面向对象的特性和动态运行时。Objective-C 沿用了 C 语言的语法规则,原始类型,和控制流语句,并加入了定义类和方法的语法规则。它在提供动态绑定和动态派发,推迟重要事项到运行时执行的同时,也在语言层面上加入了对对象图管理以及对象字面量的支持。

一瞥

这份文档介绍了 Objective-C 语言并且大量的使用范例。你将会学到如何通过创建自己的类来自定义对象,并且学会如何使用 Cocoa 和 Cocoa Touch 库提供的类。 尽管这些库中的类与语言是分离的,但是对他们的使用是与 Objective-C 编程紧密结合在一起的,并且很多 Objective-C 语言级别特性依赖于这些类提供的实现。

一个应用架构在对象的网络之上

当你想要编写一个 OS X 或 iOS 应用,你将花大部分的时间与对象打交道。这些对象是 Objective-C 类的实例,其中一部分类是由 Cocoa 和 Cocoa Touch库提供的,一部分需要你自己编写。

编写自己的类时,你需要提供一份类的描述来给类的实例细化默认公开的接口。接口包含封装相关数据的公开属性,并包含一系列方法。方法声明指出了一个对象可以接受的消息,并且指明了方法被调用时需要提供的参数。你还需要提供一份类的实现,用来提供在接口中声明的每一个方法的可执行代码。

类别拓展已有的类

当你想给一个已有类添加并不复杂的行为,与其创造一个全新的类,还不如定义一个类别。你可以用类别给任何的类添加方法,包括你并不持有实现源代码的类,比如框架类NSString

如果你拥有类的源代码,你可以用类拓展来添加新的属性,或修改已有属性的特性。类拓展经常在单一源代码或自定义库的私有实现中被用于隐藏私有行为。

协议定义消息协议

Objective-C 应用的大部分工作都是由对象之间相互传递消息形成的。通常,这些消息是由类的接口中被明确声明的方法来定义的。但是有时候,如果能定义并不与某一特定类相关的一组相关的消息会很有用。

Objective-C 通过协议定义一组相关的方法,例如对象请求代理的方法,这些方法要么是可选的要么是必须的。任何类都可以表明它采用了协议,这就意味着它必须提供协议中列出的必须实现的方法的实现。

值和集合通常作为 Objective-C 的对象

在 Objective-C 中用 Cocoa 和 Cocoa Touch类来表示值很常见。NSString 类用于字符串的自负, NSNumber类用于不同的数字类型,比如整数或浮点数,NSValue类用于其他值,比如 C 结构体。你也可以使用 C 语言定义的任何原始类型,比如 int, float, char

集合通常以集合类型的实例的形式存在, 用于收集其他 Objective-C 对象,比如NSArray, NSSet, NSDictionary

Blocks 简化常规任务

Blocks 是一种被引入 C,Objective-C 和 C++ 的一种语言特性,用来表示工作的一个单元;Block 囊括了一块代码以及这块代码被捕获时的状态,这使得他们与其他编程语言中闭包的概念列斯。闭包通常被用于简化常规任务,如集合遍历,分类和测试。Block使用如GCD这样的技术也使得同步或异步作业的调度更加简单。

错误对象被用于运行时错误

尽管 Objective-C 包含异常处理的语法,但 Cocoa 和 Cocoa Touch仅在处理编程错误(如数组越界访问)时使用异常处理,并且异常应在应用下次运行前被修复。

所有其他的错误,包括运行时错误比如存储不够或无网络连接,可以被 NSError的类实例来表示。为了在出错时给用户最好的用户体验,你的应用应该对错误有所准备并弄清如何处理最好。

Objectice-C 的代码遵守已有的约定

当编写 Objectice-C 代码时,你应该牢记一些已有的编程约定。 比如,方法名以小写字母开头,如果有多个单词应使用驼峰命名法;比如, doSomething or doSomethingElse。并且,重要的不仅仅是大写,你还应该注意代码的可读性要好,这就意味着方法名表达性要好,但不至于太啰嗦。

除此之外,如果你想利用语言和框架的特性,还有一些要遵守的约定。比如,属性访问方法必须严格的遵守命名约定以利用如 Key-Value Coding (KVC) 和 Key-Value Observing (KVO) 这样的技术。

先决条件

如果你是第一次接触 OS X 或 iOS 开发,在阅读本文档之前,你应该先阅读一下 Start Developing iOS Apps TodayStart Developing Mac Apps Today 来对 iOS 和 OS X 应用开发有一个整体的了解。除此之外,在尝试大部分章节结尾的习题之前,你应该先熟悉 Xcode 的使用。Xcode 是用来搭建 iOS 和 OS X 应用的IDE。你将自己动手编写代码,搭建你应用的交互界面,测试你的应用,并且调试解决任何问题。

相关文献

这个文档中的内容适用于 Xcode 4.4 及其之后的版本并假定你使用的是 OS X c10.7 及其之后的版本,或 iOS 6 及其之后的版本。获取更多关于 Xcode 的信息,见 Xcode User Guide。获取更多关于语言特性可利用性,见 Objective-C Feature Availability Index

Objective-C 应用使用引用计数来管理对象的生命周期。 大部分时候,编译器的自动引用计数特性会替你负责对象的内存管理。如果你无法利用 ARC, 或者你需要转换或保留手动管理内存的遗留代码,你应该阅读 Advanced Memory Management Programming Guide

除了编译器,Objective-C 还使用一个运行时系统来保证其动态性和面向对象特性。虽然你并不经常需要考虑 Objective-C 是如何运作的,但还是有可能需要直接与这个运行时系统打交道,了解运行时,见 Objective-C Runtime Programming Guide and Objective-C Runtime Reference

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容