介绍
Object-C 是一个为苹果IOS 和OS X系统编写程序的语言。它能够编译和构建命令行功能、GUI、领域框架的通用语言。他也提供了很多的功能帮助维护复杂的应用。
像C++一样,Object-C也是在C语言的基础上添加了面向对象的特性,但是两种语言完成这个目标,采用了明显不同的基础哲学。Object-C明显更加的偏向动态语言,推迟它的决定到运行时,而不是编译时。这个表现在IOS 和 OS X开发的设计模式。
Objective-C 冗长的命名规约大家周所周知。导致的结果是:最终的代码很具有描述性,所以几乎不可能导致误解或者错用。比如是相同功能的代码片段用C++和Object-C分别表示结果:
// C++
john->drive("Corvette", "Mary‘s House")
// Objective-C
[john driveCar:@"Corvette" toDestination:@"Mary‘s House"]
正如您所看到的,用Object-C语言编写的阅读起来更像是自然语言,而C++更像是机器语言。如果您习惯了Object-C的语法,学习一个新的工程或者学习第三方的代码是很容易的。
如果您对这种方括号的语法规则还是不适应,不要担心。阅读完本教程您将会熟悉他们。
Frameworks
像其他的语言一样,Object-C语言包括一个相当简单的语法规则和一个标准的开发包(SDK)。
本教程主要关注语言本身。但是教程将帮助大家了解一些框架,这些框架或者工具是我们通常能用到的。
有一些标准包不在我们本教程讨论的范围,但是Apple’s Cocoa and Cocoa Touch 框架是当前最流行的。他们分别为OS X 应用开发和IOS应用的开发定义了各自的api。下面表格中列出了在Cocoa and Cocoa Touch中的框架。想获取更加详细的信息,请参考Mac 技术概述和IOS 技术概述。
Framework | Description |
---|---|
Foundation | Defines core object-oriented data types like strings, arrays, dictionaries, etc. We’ll explore the essential aspects of this framework in the Data Types module. |
UIKit | Provides dozens of classes for creating and controlling the user interface on iOS devices. |
AppKit | Same as UIKit, but for OS X devices. |
CoreData | Provides a convenient API for managing object relationships, supporting undo/redo functionality, and interacting with persistent storage. |
MediaPlayer | Defines a high-level API for playing music, presenting videos, and accessing the user’s iTunes library. |
AVFoundation | Provides lower-level support for playing, recording, and integrating audio/video into custom applications. |
QuartzCore | Contains two sub-frameworks for manipulating images. The CoreAnimation framework lets you animate UI components, and CoreImage provides image and video processing capabilities (e.g., filters). |
CoreGraphics | Provides low-level 2D drawing support. Handles path-based drawing, transformations, image creation, etc. |
当您熟悉Object-C之后,有一些能帮助您构架IOS和 OS X应用的工具。再次强调,教程不是一个完整的app开发的教程,也就是说不教您学习上面的框架。除了Foundation 框架,您将不会学习其他的框架。
如果您对Mac应用开发感兴趣,您可以参考Ry’s Cocoa 教程,当然您必须先对Object-C有扎实的掌握。教程教您怎样构建一个OS X应用使用相同的方法,像本教程一样。
Xcode
Xcode是苹果公司为开发Mac 、iPhone和iPad应用而开发的集成开发环境(IDE).它不仅报错源代码编辑器,而且包括界面设计工具( interface builder),设备模拟器、综合测试和调试工具、上一节提到的框架以及开发app所需要的其他的内容。
当然也有其他的方法可以编译Object-C代码,但是Xcode肯定是最容易学习的。我建议您现在就安装Xcode,这样您就可以跟着学习本教程后面的例子。Xcode可以从Mac App Store 免费获取。
Creating an Application 创建一个应用
Xcode 为我们提供了 iOS and OS X 应用的各种模板。所有多可以通过导航:File > New > Project…或者Cmd+Shift+N快捷键找到。我们将打开一个对话框,询问您选择模板。
对于本教程,我们将选择Command Line Tool模板,通过OS X > Application能找到,在截图中是高亮的。这样使我们省去了设置iOS/OS X 的特殊的内容,而是关注Object-C本身。接着往下走,创建一个Command Line Tool的工程。这样打开另一个对话框,要求您配置工程信息。
您可以填写任何您喜欢的Product Name 和Organization Name;对于Company Identifier使用 edu.self,这是一个标准的个人是用的标示。对于上线的app,如果您注册为一个Apple 开发者,您将可以从Apple获取公司标示。
本教程将使用一些类,他们是定义在Foundation框架中的。所以您需要确定Type 字段,选择是Foundation。最后,Use Automatic Reference Counting 复选框通常是被选择的。
点击Next,提示你选择一个工程存储的位置,这样您应该就有了一个可以使用的Xcode工程。在Xcode的左边,您应该可以看到有一个main.m的文件。现在,这个文件包括你工程的所有。注意以.m为扩张名的文件,通常被作为Object-C的源代码文件。
为了编译工程,可以点击在左上角的Run按钮或者使用Cmd+R快捷键。这是您应该能在Xcode的Output 面板中看到输出:Hello, World!
The main() Function
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
}
return 0;
}
在 @autoreleasepool块中您可以编写代码、实验本教程的代码片段。上面的main()调用了定义在Foundation 框架中的函数。这是Object-C通用工具,为了输出消息到控制台。您也注意到了,Object-C中的字符串之前有@前缀。
在整个教程中,您将通过编辑上面您看到的main.m中的内容,观察语言的特性工作原理,但是在真正的开发中,您几乎不可能修改模板提供的main函数内容。对于大多数应用,main()只有一个功能,就是将控制权交给“application delegate”。比如,Mac app 工程的默认main函数如下:
#import <Cocoa/Cocoa.h>
int main(int argc, const char * argv[]) {
return NSApplicationMain(argc, argv);
}
但是,我们将一直使用command line tools类型的工程,所以上面的例子已经超出了教程的范围。然而Application delegates 是OS X 和 IOS 应用的一部分。Ry’s Cocoa教程的前几章将详细的讲述。
准备好!
接下来的两章将学习C语言语法。之后,我们将学习类、方法、协议和其他面向对象内容。本教程是由大量的可以实践的例子组成的。我们建议您,粘贴这些例子的代码,在您刚才创建的工程中,提供一些参数,观察会发生什么。