Object-C 介绍

介绍

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语言语法。之后,我们将学习类、方法、协议和其他面向对象内容。本教程是由大量的可以实践的例子组成的。我们建议您,粘贴这些例子的代码,在您刚才创建的工程中,提供一些参数,观察会发生什么。

时间: 2024-10-17 11:15:18

Object-C 介绍的相关文章

java之Object类介绍

1.Object类是所有java类的基类 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类,ex: public class Person{ ~~~~~ } 等价于 public class Person extends Object{ ~~~~~ } 2.Object类之equals方法 ①.Object类中定义有: public boolean equals(Object obj)方法. 提供定义对象是否相等的逻辑. ②.Objec的equals方法  定义为

Object类介绍

(1)Object是类层次结构的根类,所有的类都直接或者间接的继承自Object类.    (2)Object类的构造方法有一个,并且是无参构造        这其实就是理解当时我们说过,子类构造方法默认访问父类的构造是无参构造    (3)要掌握的方法:        A:toString()            返回对象的字符串表示,默认是由类的全路径+'@'+哈希值的十六进制表示.            这个表示其实是没有意义的,一般子类都会重写该方法.            如何重写呢

Page Object 设计模式介绍

Page Object 是 Selenium 自动化测试项目开发实践的最佳设计模式之一,Page Object 的主要体现于对界面交互细节的封装,这样可以使测试案例更关注与业务而非界面细节,提高测试案例的可读性. 1.认识 Paget Object Page Object 设计模式的优点如下: 减少代码的重复: 提高测试用例的可读性: 提高测试用例的可维护性,特别是针对 UI 频繁变化的项目: Paget Object 使用注意: public方法代表Page提供的功能 尽量不要暴露Page的内

Object类及toString方法介绍

一.Object类介绍 Object类在JAVA里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父类又是从另外一个父类继承过来,那他也只能有一个父类,父类再有父类,那也只能有一个,JAVA为了组织这个类组织得比较方便,它提供了一个最根上的类,相当于所有的类都是从这个类继承,这个类就叫Object.所以Object类是所有JAVA类的根基类,是所有JAVA类的老祖宗.所有的类,不管是谁,都是从它继承下来的. 二.toString方法介绍 一个字符串和另外一种类型连接的时

Java Object类学习笔记

看下Api文档的一些说明 public class Object Class Object is the root of the class hierarchy. Every class has Object as a superclass. All objects, including arrays, implement the methods of this class. Since: JDK1.0 从JDK1.0就已经存在的元老类,类结构的根,所有类的父类,所有类都实现了这个类的方法,包含

Java类的根Object

一.Object类介绍 Object全名java.lang.Object,java.lang包在使用的时候无需显示导入,编译时由编译器自动导入.Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. Object类是Java中唯一没有父类的类.其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法(所有的类都隐式的继承自Object,如果你没有显式地给类指定父类时,编译器会给类加一个父类Object,如果你给它指定了父类,编译器就不会多此一举了). 二.Obj

08. Object类、异常类

八.黑马程序员_Object类.异常类 A.Object类  B.异常类 A.Object类介绍 a.介绍 Object类是所有类的直接或间接父类,它里面定义的功能是所有类都具备的. b.Object类中常用的方法有 getClass():返回该对像的运行时类.它返回一个Class类型的对像.在反射中较常用: toString():返回该对像的字符串表现形式.返回值为String类型.通常我们都要覆写这个方法: hashCode():返回该对象的哈希码值.它返回一个int类型的值.通常情况下我们

JavaScript学习总结(十一)——Object类详解

一.Object类介绍 Object类是所有JavaScript类的基类(父类),提供了一种创建自定义对象的简单方式,不再需要程序员定义构造函数. 二.Object类主要属性 1.constructor:对象的构造函数. 2.prototype:获得类的prototype对象,static性质. 三.Object类主要方法 1.hasOwnProperty(propertyName) 判断对象是否有某个特定的属性.必须用字符串指定该属性,例如,obj.hasOwnProperty("name&q

Object.create()和new object()和{}的区别

Object.create()介绍Object.create(null) 创建的对象是一个空对象,在该对象上没有继承 Object.prototype 原型链上的属性或者方法,例如:toString(), hasOwnProperty()等方法 Object.create()方法接受两个参数:Object.create(obj,propertiesObject) ; obj:一个对象,应该是新创建的对象的原型. propertiesObject:可选.该参数对象是一组属性与值,该对象的属性名称将

java基础学习总结——Object类

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——Object类 一.Object类介绍 Object类在JAVA里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父类又是从另外一个父类继承过来,那他也只能有一个父类,父类再有父类,那也只能有一个,JAVA为了组织这个类组织得比较方便,它提供了一个最根上的类,相当于所有的类都是从这个类继承,这个类就叫Object.所以Object类是所有JAVA类的根基类,是所有JAVA类的老祖宗.