了解 OC 类、对象和方法的创建及使用。
例 程:
点击(此处)折叠或打开
- //使用分数的程序--类版本
- #import
- //---@interface 部分---
- @interface Fraction:NSObject
- -(void)print;
- -(void)setNumerator:(int)n;
- -(void)setDenominator:(int)d;
- @end
- //---@implementation 部分---
- @implementation Fraction
- {
- int numerator;
- int denominator;
- }
- -(void)print
- {
- NSLog(@"%i%i",numerator,denominator);
- }
- -(void)setNumerator:(int)n
- {
- numeratro=n;
- }
- -(void)setDenominator:(int)d
- {
- denominator=d;
- }
- @end
- //---program 部分---
- intmain(intargc,char*argv[])
- {
- @autoreleasepool{
- Fraction*myFraction;
- //创建一个分数实例
- myFraction=[Fraction alloc];
- myFraction=[myfraction init];
- //设置分数为 1/3
- [myFraction setNumerator:1];
- [myFraction setDenominator:3];
-
- //使用打印方法显示分数
- NSLog(@"The value of myFraction is:");
- [myFraction print];
- }
-
- return 0;
- }
执行结果:
The value of myFraction is:
1/3
1、从整个代码来看,程序在逻辑上分为:@interface、@implementation 和 program 3 个部分;其中:
1)、@interface 部分用于描述类和类的方法;补允:也可以在 interface 部分为类声明实例变量,作为类的公用变量,其子类也可以直接访问;
2)、@implementation 部分用于描述数据(类对象的实例变量存储的数据),并实现在接口中声明的方法代码;还可以根据需要增加实例变量。
3)、program 部分就是利用前面两部分实现的数据及方法,实现程序的预期目的;
2、@interface 部分语法:
点击(此处)折叠或打开
- @interface NewClassName: ParentClassName
- properAndMethodDeclarations;
- @end
4、@implementation 部分
它包含声明在 @interface 部分的方法的实际代码,且需要指定存储在类对象中的数据类型。 类及其方法在 @interface 部分中声明,在@implementation 部分中实现。
1)、 @implementation 部分的一般格式:
点击(此处)折叠或打开
- @implementation NewClassName
- {
- memberDeclarations;
- }
- methodDefinitions;
- @end
@implementation Fraction: NSOject
2)、memberDeclarations 部分指定了哪种类型的数据要存储到 Fraction 中,以及这些数据类型多名称。 此例中有两个实例变量,分别是 int numerator 和 int denominator;
5、pragram 部分
1)、对象实例过程:
(1)、定义对象实例变量, Fraction *myFraction; //可以理解为定义一个指针变量
(2)、为变量分配内存,myFraction = [Fraction alloc]; //这里的 alloc 方法是 Fraction 超类的内存分配方法。
(3)、初始化对象实例,myFraction = [Fraction init]。
后面两步可以组合简写成一条语句: myFraction = [[Fraction alloc] init]; 此外还可以用 new 方法,一步到位,如:Fraction *myFraction = [Fraction new];
2)、发消息调用,实现预期,主要有两种形式:
(1)、就是本例用的,[Fraction print];
(2)、类似C语言调用方法,Fraction.print。
引申内容:
类名规则
1)、类名要以大写字母开头,以便通过观察名称的每一个字母就能把类名和其他变量类型区分开来。如:
AddressBook-------------可能是一个类名;
currentEntry--------------可能是一个对象;
addNewEntry-------------可能是一个方法名;
2)、命名要富有意义,增强程序可读性,使程序有自解释性(self-explanatoty),减少文档编写工作。
数据类型