Object-C-经典入门教程-修正版

上传人:M****1 文档编号:432799051 上传时间:2023-10-07 格式:DOC 页数:53 大小:295KB
返回 下载 相关 举报
Object-C-经典入门教程-修正版_第1页
第1页 / 共53页
Object-C-经典入门教程-修正版_第2页
第2页 / 共53页
Object-C-经典入门教程-修正版_第3页
第3页 / 共53页
Object-C-经典入门教程-修正版_第4页
第4页 / 共53页
Object-C-经典入门教程-修正版_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《Object-C-经典入门教程-修正版》由会员分享,可在线阅读,更多相关《Object-C-经典入门教程-修正版(53页珍藏版)》请在金锄头文库上搜索。

1、 Object-C 入门教程大纲o 开始吧下载这篇教学o 设定环境o 前言o 编译 hello worldo 创建 Classesinterfaceo implementationo 把它们凑在一起o 详细说明.多重参数o 建构子(Constructors)o 访问权限o Class level accesso 异常情况(Exceptions)处理o 继承、多型(Inheritance, Polymorphism)以及其他面向对象功能id 型别o 继承(Inheritance)o 动态识别(Dynamic types)o Categorieso Posingo Protocolso 内存管理R

2、etain and Release(保留与释放)o Dealloco Autorelease Poolo Foundation Framework ClassesNSArrayo NSDictionary 优点与缺点 更多信息开始吧下载这篇教学 所有这篇初学者指南的原始码都可以由 objc.tar.gz 下载。这篇教学中的许多范例都是由 Steve Kochan 在 Programming in Objective-C. 一书中撰写。如果你想得到更多详细信息及范例,请直接参考该书。这个网站上登载的所有范例皆经过他的允许,所以请勿复制转载。设定环境 Linux/FreeBSD: 安装 GNUSt

3、ep为了编译 GNUstep 应用程序,必须先执行位于/usr/GNUstep/System/Makefiles/GNUstep.sh 的 GNUstep.sh 这个档案。这个路径取决于你的系统环境,有些是在 /usr, some /usr/lib,有些是/usr/local。如果你的 shell 是以 csh/tcsh 为基础的 shell,则应该改用 GNUStep.csh。建议把这个指令放在 .bashrc 或 .cshrc 中。 Mac OS X: 安装 XCode Windows NT 5.X: 安装 cygwin 或 mingw,然后安装 GNUStep前言 这篇教学假设你已经有一

4、些基本的 C 语言知识,包括 C 数据型别、什么是函式、什么是回传值、关于指针的知识以及基本的 C 语言内存管理。如果您没有这些背景知识,我非常建议你读一读 K&R 的书:The C Programming Language(译注:台湾出版书名为 C 程序语言第二版)这是 C 语言的设计者所写的书。 Objective-C,是 C 的衍生语言,继承了所有 C 语言的特性。是有一些例外,但是它们不是继承于 C 的语言特性本身。 nil:在 C/C+ 你或许曾使用过 NULL,而在 Objective-C 中则是 nil。不同之处是你可以传递讯息给 nil(例如 nil message;),这是完

5、全合法的,然而你却不能对 NULL 如法炮制。 BOOL:C 没有正式的布尔型别,而在 Objective-C 中也不是真的有。它是包含在 Foundation classes(基本类别库)中(即 import NSObject.h;nil 也是包括在这个头文件内)。BOOL 在 Objective-C 中有两种型态:YES 或 NO,而不是 TRUE 或 FALSE。 #import vs #include:就如同你在 hello world 范例中看到的,我们使用了#import。#import 由 gcc 编译程序支援。我并不建议使用 #include,#import基本上跟 .h 档头

6、尾的 #ifndef #define #endif 相同。许多程序员们都同意,使用这些东西这是十分愚蠢的。无论如何,使用 #import 就对了。这样不但可以避免麻烦,而且万一有一天 gcc 把它拿掉了,将会有足够的 Objective-C 程序员可以坚持保留它或是将它放回来。偷偷告诉你,Apple 在它们官方的程序代码中也使用了 #import。所以万一有一天这种事真的发生,不难预料 Apple 将会提供一个支持 #import 的 gcc 分支版本。 在 Objective-C 中, method 及 message 这两个字是可以互换的。不过messages 拥有特别的特性,一个 mes

7、sage 可以动态的转送给另一个对象。在Objective-C 中,呼叫对象上的一个讯息并不一定表示对象真的会实作这个讯息,而是对象知道如何以某种方式去实作它,或是转送给知道如何实作的对象。编译 hello world hello.m #import int main( int argc, const char *argv ) printf( hello world/n ); return 0; o 输出hello world o 在 Objective-C 中使用 #import 代替 #include Objective-C 的预设扩展名是 .m创建 classesinterface 基于

8、 Programming in Objective-C, Copyright 2004 by Sams Publishing一书中的范例,并经过允许而刊载。 Fraction.h #import interface Fraction: NSObject int numerator; int denominator; -(void) print; -(void) setNumerator: (int) d; -(void) setDenominator: (int) d; -(int) numerator; -(int) denominator; end o NSObject:NeXTStep

9、Object 的缩写。因为它已经改名为 OpenStep,所以这在今天已经不是那么有意义了。 继承(inheritance)以 Class: Parent 表示,就像上面的 Fraction: NSObject。 夹在 interface Class: Parent . 中的称为 instance variables。 没有设定访问权限(protected, public, private)时,预设的访问权限为protected。设定权限的方式将在稍后说明。 Instance methods 跟在成员变数(即 instance variables)后。格式为:scope (returnType

10、) methodName: (parameter1Type) parameter1Name;scope 有class 或 instance 两种。instance methods 以 - 开头,class level methods 以 + 开头。 Interface 以一个 end 作为结束。implementation 基于 Programming in Objective-C, Copyright 2004 by Sams Publishing一书中的范例,并经过允许而刊载。 Fraction.m #import Fraction.h #import implementation Fra

11、ction -(void) print printf( %i/%i, numerator, denominator ); -(void) setNumerator: (int) n numerator = n; -(void) setDenominator: (int) d denominator = d; -(int) denominator return denominator; -(int) numerator return numerator; end o Implementation 以 implementation ClassName 开始,以 end 结束。 Implement

12、定义好的 methods 的方式,跟在 interface 中宣告时很近似。把它们凑在一起 基于 Programming in Objective-C, Copyright 2004 by Sams Publishing一书中的范例,并经过允许而刊载。 main.m #import #import Fraction.m int main( int argc, const char *argv ) / create a new instance Fraction *frac = Fraction alloc init; / set the values frac setNumerator: 1;

13、 frac setDenominator: 3; / print it printf( The fraction is: ); frac print; printf( /n ); / free memory frac release; return 0; o outputThe fraction is: 1/3 o Fraction *frac = Fraction alloc init;这行程序代码中有很多重要的东西。 在 Objective-C 中呼叫 methods 的方法是 object method,就像 C+的 object-method()。 Objective-C 没有 value 型别。所以没有像 C+ 的 Fraction frac; frac.print(); 这类的东西。在 Objective-C 中完全使用指针来处理对象。 这行程序代码实际上做了两件事: Fraction alloc 呼叫了 Fraction class 的 alloc method。这就像 malloc 内存,这个动作也做了一样的事情。 object init 是一个建构子(constructor)呼叫,负责初始化对象中的所有变量。它呼叫了 Fraction alloc 传回的 instance 上的 init method。这个动作非常普遍,所以通常以一行程序完成:Object

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号