Objective-C类,对象,方法

来源:互联网 发布:卓诗尼官方旗舰店淘宝 编辑:程序博客网 时间:2024/04/28 09:44

Objective-C采用特定的语法对类和实例应用方法:

[ ClassOrInstance method];

左方括号后要紧跟类的名称或者该类的实例名称,它后面可以是一个或多个空格,空格后面是将要执行的方法。最后,使用右方括号和分号来终止。请求一个实力或类执行某个操作时就是在向它发生一条消息。

#import <Foundation/Foundation.h>

这是一个系统文件,#import表示将该文件的信息导入或包含到程序中,就像在这里输入该文件的内容。要导入文件Foundation.h因为它包含其他类和函数的有关信息,在程序后面的部分中会用到。

Int main(int argc,const char * argv[])

制定程序的名称为main,是一个特殊的名称,用于准确滴表示程序将在何处开始执行。Main之前的保留字int指定main返回的值类型,该值为整形。

@autoreleasepool{   }

{}之间的程序语句会在被称为自动地释放池的语境中执行。自动释放池的机制是:它使得应用在创建新对象时,系统能够有效地管理应用所使用的内存。NSLog()函数的参数是@”Programming is fun”此处的@位于一对双引号的字符串前面,这称为常量NSString对象。

NSLog是一个Objective-c库中的函数,他仅仅显示或记录其参数,但是之前它会显示该函数的执行日期和时间程序名。

Return 0表示要终止main的执行并发送回一个状态值0

@interface部分:

定义新类时,首先需要告诉Objective-C编译器该类来自何处。即必须为它的父类命名。其次,还必须定义在处理该类的对象时将要用到的各种操作或方法的类型。

选择名称:

Objective-C中变量可以用于存储浮点数,字符,甚至对象(对象的引用)。制定名称的规则相当简单:名称必须以字母或下划线开头,之后可以是任何字幕,下划线或者0-9之间的数字组合。NSArray *colorArray=@[@”red”,@”blue”,@”green”];

类方法和实例方法:

必须定义各种方法才能使用Fraction

Print方法的声明,应该位于接口文件中:

-(void) print;

开头“-”通知Objective-C编译器,该方法是一个实例方法。此外正好“+”表示类方法。类方法是对类本身执行某些操作的方法。如创建类的新实例。

实力方法能够对类的实例执行一些操作,如设置值,检索值,和显示值。

1.返回值:

声明新方法时,必须告诉Objective-C编译器该方法是否又返回值,如有是哪种类型。做到这一点,需要将返回类型放入开头的负号或正号之后的圆括号。因此,声明:

-(int) currentAge;

指定名为currentAge的实例方法将返回一个整形值

类似地语句:

-(double) retrieveDoubleValue;

声明了一个返回双精度值的方法。

如果方法不返回值,可用void类型指明,语句如下:

-(void) print;

这条语句声明了一个名为print的方法,它不返回任何值。

2.方法的参数:

-(void) setNumerator:(int)n;

-(void) setDenominator:(int) d;

他们都是不返回值的实例方法。每个方法都有一个整形参数,这是通过参数名前面的int指明的。

-             (void)       setNumerator    :                (int)         n;

方法类型    返回类型    方法名称        方法有参数      参数类型    参数名称

 @implementation部分:

与注释一样,@implementation部分包含声明在@interface部分的方法的实际代码,且需要制定存储在类对象中的数据类型。在@interface部分声明方法,并在@implementation部分定义它们,@implementation部分的一般格式如下:

@implementation NewClassName

{

  memberDeclarations;

}

methodDefinitions;

@end;

NewClassName表示的名称与@interface部分名称相同。可以再父的名称之后使用冒号:

如同在@interface部分使用冒号一样:

2implementation Fraction:NSObject

memberDeclarations部分指定了哪种类型的数据将要存储到Fraction中以及这些数据类型的名称。

@implementation部分中的methodDefinitions部分包含在@interface部分指定的每个方法的代码中。与@interface类似每种方法的定义通过方法的类型,它的返回值和参数进行标识,我们并没有使用分号来结束该行,而是将之后的方法代码放入一对花括号中。使用@synthesize指令能够让编译器自动为你生成一些方法

myFraction =[Fraction alloc];

Allocallocate的缩写。因为要为新分数分配内存存储空间,表达式为:[Fraction alloc]

想新创建的Fraction类发送一条消息。该alloc方法继承自父类。如果向某个类发送alloc消息,便获得该类的新实例。Alloc方法保证对象的所有实例变量都变成初始状态。在创建对象之后还必须对它进行初始化:

myFraction=[Fraction init];

Init方法用于初始化类的实例变量。将init消息发送给myFraction.init方法也可以返回一个值,即被初始化的对象。将返回值存储到Fraction的变量myFraction中。

Fraction*myFraction;

myFraction前的星号*表明myFractionFraction对象的引用或指针。变量myFraction实际上并不存储Fraction数据而是存储了一个引用,表明对象数据在内存中的位置。在声明myFraction时它的值是未定义的,它没有被设定为任何值,并且没有默认值。




0 0