RyPress’Oc教程——01简介

Introduction 简介

Objective-C的是基于苹果的iOS和OS X操作系统原生编程语言。这是一个已编译的,通用的语言能力建设的一切命令行实用程序动画图形用户界面,以特定领域的图书馆。它还提供了维护大型、可扩展应用的框架,和许多工具。



像C++一样,Objective-C是在C语言的基础上拓展了面向对象的功能,但两种语言的使用从根本上不同的理念做到了这一点。Objective-C中是更有活力,推迟其大部分决定运行时而非编译时。这体现在很多的设计模式相关的iOS和OS X的开发。
Objective-C以其冗长的命名约定而出名,写出的代码可读性很高,不容易被混淆和误解,例如,下面的代码片段显示了一个C方法的调用和Objective-C中的调用,其作用是一样的,但是oc更能显现出其语法更通俗易懂。

1
2
3
4
// C++
john->drive("Corvette", "Mary's House")
// Objective-C
[john driveCar:@"Corvette" toDestination:@"Mary's House"]

正如你所看到的, Objective-C的方法,请阅读更像是面向人类的自然语言,而不是电脑像电脑语言那样难懂。一旦你习惯了这一点,就非常容易定位自己在新的项目的代码,容易看懂其他人写的代码。

Frameworks 框架

与大多数编程语言一样, Objective-C语言是一个标准库,支持的语法比较简单。本教程主要是侧重于语言本身,但它有助于你更好的完成你的代码。oc中有几个不同的“标准库”,但苹果的cocoacocoa touch框架是目前最流行​​的。这些定义的API,可分别用于构建OS X和iOS应用程序。下表重点介绍了一些在cocoa和cocoa touch的关键框架。如需更详细的讨论,请访问苹果技术文档iOS的技术文档

























































Framework

Description

Foundation

定义如字符串的面向对象的数据类型,数组,字典等,我们将在数据类型模块这个框架是更深入的探讨。

UIKit

提供了很多用于控制ios设备的用户接口的类。

AppKit

和UIKit一样,但是它是用于Mac os设备的。

CoreData

为管理对象的关系,并能支持持久存储交互的一个方便的API 。

MediaPlayer

定义播放音乐,呈现视频,并访问用户的iTunes库中的高级API 。

AVFoundation

提供用于播放,录制,和集成了音频/视频转换成自定义应用程序较低级别的支持。

QuartzCore

包含两个子框架处理图像。该CoreAnimation框架可以让你制作动画的UI组件,而CoreImage提供图像和视频处理功能(如过滤器) 。

CoreGraphics

提供低级别的2D绘图的支持。处理基于路径的绘制,变换,影像创建等等。

我们有了以上的了解,知道这些都是开发IOS和Mac OSX应用程序的框架,但是本教程不是一个全面的指南,它的目的是让你准备使用上面的框架进行应用开发,这里我们除了基础框架,其他的不会细讲。

Xcode

Xcode是苹果公司的在Mac下的集成开发环境(IDE ) ,用于iPhone和iPad的应用程序开发。它不仅包括源代码编辑器,也是一个界面生成器,一个设备模拟器,一个全面的测试和调试套件,在上一节中讨论的框架,和一切你需要的应用程序。
虽然还有其他的方法来编译Objective-C代码,但 Xcode是绝对最容易的。我们强烈建议您立即安装Xcode,您可以跟随在本教程中的示例。它可以免费通过Mac App Store获得。

Creating an Application

Xcode中提供了一些模板,包括各种类型的iOS和OS X应用程序。所有的人都可以通过navigating to File > New > Project..或使用 Cmd+Shift+N快捷键。这将打开一个对话窗口,要求您选择一个模板:



在本教程中,我们将使用在OS X>应用程序中找到的命令行工具模板,在上面的截图高亮显示。这让我们剥去所有具体到iOS / OS X的元素,专注于Objective-C语言作为一种语言。来吧,现在创建一个新的命令行工具。这将打开另一个对话框,要求您配置项目:



你可以使用任何你喜欢的产品名称和组织名称的字段。本公司标识的使用edu.self ,这是典型的私人使用的标识符。对于生产应用程序,你需要从苹果注册得到一个真正的公司ID。
本教程采用的基础架构中定义多个类,所以一定要选择Foundation框架,并勾选使用引用计数复选框新建项目。
单击下一步,会提示您输入文件路径来存储项目(保存你喜欢的任何地方) ,你现在应该有一个全新的Xcode项目。在Xcode IDE的左侧栏,你会发现一个名为main.m文件(连同其他一些文件和文件夹) 。目前,该文件包含应用程序的全部内容。请注意,.m后缀名用于Objective-C源文件。



要编译该项目,单击IDE的左上角的Run按钮或使用CMD + Ř快捷方式。然后会在位于Xcode下方的控制台输出Hello,World !:



The main() Function

在普通的C程序中,main( )函数作为一个Objective- C应用程序的根目录。大多数内置的Xcode的模板创建一个名为main.m文件中定义了一个默认的main()函数。选择我们的main.m在Xcode的项目导航器面板应打开编辑器窗口,并显示下面的信息。

1
2
3
4
5
6
7
8
9
#import <foundation /Foundation.h>

int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
}
return 0;
}

您可以@ autoreleasepool块里面编写代码,并尝试从本教程中的片段。上面的main()函数只是调用由基础框架中定义的全局的NSLog ( )函数。这是Objective-C语言的通用工具,用于输出信息到控制台。还要注意的是Objective-C中字符串总是带有前缀在(@)符号。
在本教程中,我们将直接编辑上面的main.m看到新的语言功能是如何工作的,但在现实世界中,你可能永远不会有改变由模板提供的main()函数。对于大多数应用程序, main()中需要做的唯一事情就是程序的的旁路控制“应用程序委托。 ”例如,默认的main()函数用于在iOS项目如下所示。

1
2
3
4
5
6
7
8
9
#import <Uikit/UIKit.h>

#import "AppDelegate.h"

int main(int argc, char *argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}