Object-C 介绍
2016-04-10 13:34
501 查看
介绍
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. |
如果您对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语言语法。之后,我们将学习类、方法、协议和其他面向对象内容。本教程是由大量的可以实践的例子组成的。我们建议您,粘贴这些例子的代码,在您刚才创建的工程中,提供一些参数,观察会发生什么。
相关文章推荐
- WaitForMultipleObjects使用详解
- Objective-C 链式编程思想
- python 绘图添加图例显示UserWarning: Legend does not support [<matplotlib.lines.Line2D object at 0x07FA3210>]
- Ry’s Objective-C 教程
- Windows下的Objective-C集成开发环境(IDE)的搭建
- Objective-C @encode关键字
- OAViewObject中clearCache(),reset(),setMaxFetchSize(-1)的使用
- 第一章 熟悉Objective-C
- Delphi_08_Delphi_Object_Pascal_基本语法_06_函数参数
- Object类
- Objective-C method及相关方法分析
- Object类、instanceof
- net.sf.json.JSONException: 'object' is an array. Use JSONArray instead
- Objective-C 深入理解 +load 和 +initialize
- 深入理解 Objective-C 的方法调用流程
- 【Objective-C】GCD介绍
- List<Map<String, Object>>的循环
- Objective-C Runtime 运行时之六:拾遗
- Objective-C Runtime 运行时之五:协议与分类
- Objective-C Runtime 运行时之四:Method Swizzling