#文档名:用 Objective-C 编程程序员
##关于Objective-C(简称OC)编程
给iOS和OS X写程序的时候,Objective-C是程序员使用的主要语言。OC是C语言的一个扩展集,提供了面向对象的特性和一个动态运行时。
OC的语法,基本类型,控制流语句也都是从C语言继承而来,而且还加入了定义类和方法的语法。OC也添加了语言级别的对象图形管理和对
象标示符支持,来提供动态分型和动态绑定,把不少事情延迟到运行时。数组
###内容惊鸿一瞥ruby
本文档介绍了OC语言和一些扩展的例子。学习怎么建立自定的类来描述对象,如何使用Cocoa和Cocoa Touch提供的框架类。虽然说框架时独立
与语言存在的,可是不少的特性和框架类密不可分。网络
###一个App是用对象的网络构建起来的闭包
写iOS和OS X的App,主要就是和对象打交道。对象是OC类的实例,有Cocoa提供的类,也有本身定义的类。并发
若是你要开始建立本身的类,就开始从描述那个类下手,自习想一想这个类的实例对象的公共接口是什么样子的。这个接口包括了封装了相关
数据的共用属性,还有一系列方法。方法的声明显示的是对象能够接受的消息,在任什么时候候被调用的时候方法能够接受的参数信息。自定类
中还要包括一个实现,视线中包括了以前在接口中声明的全部方法的可执行代码。框架
###用“分类”来扩展示有的类
为了给现有的类增长一点小功能,犯不上建立一个全新的类,能够经过定义一个“分类”来给现有的类增长自定的行为。使用分类能够给任
何类增添方法,即便是框架里面的那些你没有源代码的类,好比NSString。异步
若是你拥有现有类的源代码,可使用一个类扩展来增长新的属性,或者说修改现有的属性。类扩展常常用来吧一个私有行为隐藏在单个源
文件或者一个自定的框架实现中。ide
###“协议”定义消息规范
OC程序里最常发生的操做实际上是对象之间互相发消息。通常来讲,这些消息是经过方法的形式显式地定义在类的接口中。可是有时候,一组
相关的类是不必定是直接绑定在某个特定的类上的。
OC使用协议来定义一组相关的方法,好比那些对象会在委托中调用的方法,能够设置成必须实现也能够设置成可选实现。任何类均可以选择
实现一个协议,也就是说,这个类必需要实现协议中定义的必须实现的方法。
###值类和集合类常被包装成OC对象
通常OC会用Cocoa中的类来表示值类。NSString类用来表示字符串,NSNumber类用来包装整型或浮点型数字,NSValue类则用来包装其余的类
型,好比C语言的结构体。你也可使用C语言中的基本类型,好比int,float,或者char。
集合类会包装成Cocoa集合类的实例来使用,好比NSArray数组,NSSet集合,或者NSDictionary字典,均可以用来做为OC对象的集合。
###“代码块”简化通常任务
代码块是C,OC,C++都已经引入的语言特性,用来表明一个工做单元;代码块会用一对花括号包装一块代码,看上去很像其余语言里的闭包
。代码块常常用来简化通常的任务操做,好比集合类中的枚举,排序,测试操做。代码块也可使得使用GCD技术的并发或者异步的多任务
操做变得更简单。
###用在运行时问题的Error对象
虽然OC包含了异常处理的语法,可是Cocoa只会在出现编译时错误的时候使用异常(好比数组访问越界),这些问题在App发布以前就应该修
正。
全部其余的错误,运行时错误,好比磁盘空间溢出或者网络服务故障,都被包装成NSError类的实例。你的程序应该有所准备而且作出处理
,来确保良好的用户体验。
###OC代码要遵循现有的代码规范
写OC代码,应该时刻记住几条代码规范。方法名应该小写字母开头,以后用驼峰命名,蔽日doSomething和doSomethingElse。这不是说大写
字母有多重要,而是要确保你的代码具备必定的可读性,方法的名称应该具备意义,可是也不要太过冗长。
另外,有一些规则在使用框架或者语言特性的时候是必须遵照的。好比属性访问器方法必须遵照严格的命名规范以配合好比KVC和KVO这些技
术。
##前导知识
若是你是开发新手,在学习这份文档以前,先去看看Start Developing iOS Apps Today文档,对iOS程序开发有一个通盘的了解。另外你还
要比较熟悉Xcode的基本用法,Xcode是开发程序的IDE工具;用Xcode来写代码,设计界面,测试应用,调试程序等等。
在语言上,有一些C语言基础或者基于C语言的系列语言的知识是不错的,本文档中确实包含了一些C语言的流程控制语句的示例代码。若是
你有其余的高级语言的经验,好比ruby或者Python,那也是能够的,接着往下吧。
另外一个基本的前导知识是面向对象的一些基本概念,以及一些通常的面向对象的基本原则。要是彻底没概念,推荐先去看相关章节 OC编程
概念。
OC使用ARC来管理对象的生命周期,ARC会管好这些事情,可是要是你没办法使用ARC,就须要本身关心好这些内存管理的事情,你应该看看 Advanced Memory Management Programming Guide文档。