Objective-C类-Objective-C 分离 接口和实现文件

Objective-C类-Objective-C 分离 接口和实现文件,第1张

概述在之前谈了大量的关于 Objective-C 的基础内容,如程序循环,构造选择和使用表达式后。今天 Mike 终于可以和大家重新出发,继续以 类 作为切入点谈起,开始真正的 Objective-C 编程之旅。这篇文章的主旨首先是建立个真正意义上的 Project (范例 7-1),将类的声明和定义放在单独的文件中,不再象原来那样全部堆在一起。 第一步,打开 Xcode,新建个称为 Fraction 在之前谈了大量的关于 Objective-C 的基础内容,如程序循环,构造选择和使用表达式后。今天 Mike 终于可以和大家重新出发,继续以 作为切入点谈起,开始真正的 Objective-C 编程之旅。这篇文章的主旨首先是建立个真正意义上的 Project (范例 7-1),将类的声明和定义放在单独的文件中,不再象原来那样全部堆在一起。
第一步,打开 Xcode,新建个称为 FractionTest 的项目。对新建项目不清楚的朋友可以参考《如何搭建和使用 Xcode 开发环境》一文,在 FractionTest.m 中键入以下程序: 01 #import "Fraction.h"
02 
03 int main (int argc, const char * argv[])
04 {
05     NSautoreleasePool * pool = [[NSautoreleasePool alloc] init];
06     Fraction *myFraction = [[Fraction alloc] init];
07     
08     // Set fraction to 1/3
09     
10     [myFraction setNumerator: 1];
11     [myFraction setDenominator: 3];
12     
13     // display the fraction
14     
15     NSLog(@"The value of myFraction is:");
16     [myFraction print];
17     
18     [myFraction release];
19     
20     [pool drain];
21     return 0;
22 }
大家会注意到,该文件未包括 Fraction 类的定义。然而,它却导入了一个称为 Fraction.h 的文件。 第二步,通常类的声明 (@interface 部分) 要放在它自己的名为 class.h 的文件中。而类的定义 (@implementation 部分) 通常放在相同名称的文件中,但扩展名要使用 .m。所以把 Fraction 类的声明放到 Fraction.h 文件中,把 Fraction 类的定义放到 Fraction.m 文件中。我们回到 Xcode 环境中,在 file 菜单中选择 New file。在左侧窗格中,选择 Cocoa。在右上窗格中,选择 Objective-C 类。



第三步,点击 Next,键入 Fraction.m 作为文件名。选中 Also Create Fraction.h 框。该文件所在的位置应该与 FractionTest.m 文件的文件夹相同。



第四步,现在我们点击 Finish。Xcode 在项目中添加了两个文件:Fraction.h 和 Fraction.m。 第五步,在 Fraction.h 文件中默认的是导入 Cocoa。这里我们用不上它,所以把 #import <Cocoa/Cocoa.h> 改为 #import <Foundation/Foundation.h> 第六步,输入 Fraction 类的接口部分,代码如下: 01 //
02 //  Fraction.h
03 //  0701FractionTest
04 //
05 //  Created by Mike on 11-5-9.
06 //  copyright 2011 MacDev. All rights reserved.
07 //
08 
09 #import <Foundation/Foundation.h>
10 
11 // The Fraction class
12 
13 @interface FractionNSObject
14 {
15     int numerator;
16     int denominator;
17 }
18 
19 -(voID)        print;
20 -(voID)        setNumerator: (int) n;
21 -(voID)        setDenominator: (int) d;
22 -(int)        numerator;
23 -(int)        denominator;
24 -(double)    convertToNum;
25 
26 @end 接口文件告诉编译器 Fraction 类的外观特征,大家应该都明白,不展开了。 第七步,Fraction 类的实现细节,我们把它写入 Fraction.m 中。 02 //  Fraction.m
09 #import "Fraction.h"
11 @implementation Fraction
13 -(voID) print
15     NSLog (@"%i/%i", numerator, denominator);
16 }
17 
18 -(voID) setNumerator: (int) n
19 {
20     numerator = n;
21 }
22 
23 -(voID) setDenominator: (int)d
24 {
25     denominator = d;
26 }
27 
28 -(int) numerator
29 {
30     return numerator;
31 }
32 
33 -(int) denominator
34 {
35     return denominator;
36 }
37 
38 -(double) convertToNum
39 {
40     if (denominator != 0)
41         return (double) numerator / denominator;
42     else
43         return 1.0;
44 }
45 
46 @end 注意,我们使用了以下语句将接口文件导入到实现文件中: #import "Fraction.h" 这样做的目的是,使编译器知道为 Fraction 类声明的类和方法。同时还能确保这两个文件的一致性。Mike 需要提醒大家的是,一般不能 (虽然可以这么做) 在实现部分重复声明类的实例变量,所以编译器需要从 Fraction.h 中包含的接口部分获得信息。 需要注意的另一件事:导入的文件要用一对双引号括起来,而不是 <Foundation/Foundation.h> 中的 < 和 > 字符。双引号用于本地文件 (你自己创建的文件),本地文件与系统文件相对,并且它们告诉编译器在哪里找到指定的文件。使用双引号,编译器一般会首先在当前目录寻找指定文件,然后再转到其他位置查找。如果有必要,可以指定编译器要查找的实际位置。 最后,大家已经可以看到测试程序 FractionTest.m 包括接口文件 Fraction.h,而不包括实现文件 Fraction.m。现在,该程序分成了三个独立的文件。对于小程序例子而言,这似乎非常浪费时间。但是,以后我们就会发现它的实用性非常明显。现在可以编译并运行程序,方法与以前使用的一样,不再细说。 FractionTest 程序在CSDN的下载地址 总结

以上是内存溢出为你收集整理的Objective-C类-Objective-C 分离 接口和实现文件全部内容,希望文章能够帮你解决Objective-C类-Objective-C 分离 接口和实现文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1066356.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存