Objective-C编程语言(Programming with Objective-C)(零):简介

投稿作者:简书/杨浩宇

新浪微博:@杨浩宇-小橘爷

原文链接:

http://www.jianshu.com/p/231fd54cc07d

关于Objective-C

Objective-C是你在为OS X和iOS系统编写应用程序时使用的主要编程语言。它是C语言的超集并具备面对对象的能力和动态运行的特性。Objective-C继承了C语言的语法,基本类型和控制流语句并且添加了定义类和方法的语法。并且Objective-C语言在提供了动态类型和延迟到运行时的绑定的同时,为对象图形管理和对象字面提供了语言层面上的支持。

概览

本文介绍了Objective-C语言并且就其使用提供了广泛的例子。你将会学习到如何创造你自己描述自定义对象的类别以及如何使用由Cocoa和Cocoa Touch所提供的框架类。尽管框架类是与语言本身所分开的,但是他们的使用与处理和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。

集合经常代表某一集合类的实体,例如NSArray,NSSet, 或者NSDictionary,这其中的每一个都被用于集合其他Objective-C对象。

相关章节:值和集合

Blocks简化常规任务

Blocks是引入到C,Objective-C和C++语言的一种语言功能,来代表工作的一个单元;它们把一块代码以捕获的状态封锁,这就使它们在其他程序语言中类似于关闭状态。Blocks常常被用于简化常规任务,例如集合枚举,分类和测试。同样它们使用多线程优化技术(GCD)也使得并发或异步执行规划任务更加简单。

相关章节:使用Blocks

错误对象在运行时错误问题中的使用

尽管Objective-C包括异常处理的语法,仅在程序错误(如界外数组访问)时使用的Cocoa和Cocoa Touch出现异常,这些都需要在一个应用程序运行前确定。

尽管其他的错误—包括运行时错误,例如硬盘空间不足或者网络功能不可用,都由NSError类来体现。你的应用程序要为错误做好计划并且确定如何做到最佳处理,以达到在问题出现时提供尽可能最佳的用户体验。

相关章节:错误处理

Objective-C代码遵守已有的规则

写Objective-C代码的时候,你应该记住大量已有的代码规则。例如,方法名称以小写字母开始,用大小写混合的方式来区分多个单词,就像doSomething或者doSomethingElse。而且,重要的不仅仅是要关注大写,你还应该确定你的代码尽可能的能被读懂。也就是说,方法名称要能够传词达意,而不是特别冗长。

除此以外,如果你想利用语言或者结构特征,你还需要注意一些规则。例如,属性访问方法必须严格遵守命名规则,以便能够和Key-Value Coding(KVC)或者Key-Value Observing (KVO)这些技术共同使用。

相关章节:命名规范

先决条件

如果你对OS X或者iOS的发展还不熟悉,你可以在读这份文档前阅读Start Developing iOS Apps Today或者Start Developing Mac Apps Today,以便对iOS和OS X的应用发展过程有一个大概的了解。除此以外,在继续这篇文档大部分章节后面的练习前,先熟悉 Xcode 。 Xcode 是一种用来给iOS和OS X建立应用程序的集成开发环境。你将用它编写代码,设计应用程序的用户界面,测试你的应用软件,以及调试任何问题。

虽然有一些与C语言或者基于C语言的一种语言的编程经验会更好,比如:Java或者C# ,这份文档包括基本C语言特征的内联例子,比如:流控制声明。如果你还掌握其他更高级的程序语言,比如Ruby或者Python,你应该能够理解这些内容。

合理的通用性被用于一般面向对象编程原则,尤其是当它们用于 Objective-C 环境中。但是它假定你至少有基本的面向对象概念。如果你不熟悉这些概念,你应该读读Concepts in Objective-C Programming中的相关章节。

相关文献

这份文档中的内容使用Xcode 4.4以及更高版本,并且假定你的目标是OS X v10.7及更高版本,或者iOS 5及更高版本。更多有关Xcode的信息,请关注Xcode Overview。有关语言特征可利用性,请关注Objective-C Feature Availability Index。

Objective-C应用程序使用引用计数来决定对象的使用寿命。大多情况下,编译程序的自动引用计数特征会为你注意这个问题。如果你不能利用ARC ,或者需要转换或保留手动管理对象的遗留代码,你应该阅读Advanced Memory Management Programming Guide。

除了编译程序,Objective-C 语言使用一种runtime system来保证它的动态和面向对象特征。虽然你通常不需要担心Objective-C怎样“工作”,直接和这种runtime system互动是可以实现的。就像Objective-C Runtime Programming Guide和Objective-C Runtime Reference里描述的一样。

热门文章

☞ 给未来程序员的15个顶级职业建议

☞  如何向外行解释产品经理频繁更改需求为什么会令程序员烦恼?

☞ 女程序员做了个梦,各路大神惊现神级评论!

☞ 监狱里的囚犯都在学习编程,你还有什么理由拒绝呢?


左下角点击查看【作者原文】!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值