Objective-C类,对象,方法
2015-11-24 19:26
435 查看
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];
Alloc是allocate的缩写。因为要为新分数分配内存存储空间,表达式为:[Fraction alloc]
想新创建的Fraction类发送一条消息。该alloc方法继承自父类。如果向某个类发送alloc消息,便获得该类的新实例。Alloc方法保证对象的所有实例变量都变成初始状态。在创建对象之后还必须对它进行初始化:
myFraction=[Fraction init];
Init方法用于初始化类的实例变量。将init消息发送给myFraction.init方法也可以返回一个值,即被初始化的对象。将返回值存储到Fraction的变量myFraction中。
Fraction*myFraction;
myFraction前的星号*表明myFraction是Fraction对象的引用或指针。变量myFraction实际上并不存储Fraction数据而是存储了一个引用,表明对象数据在内存中的位置。在声明myFraction时它的值是未定义的,它没有被设定为任何值,并且没有默认值。
[ 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];
Alloc是allocate的缩写。因为要为新分数分配内存存储空间,表达式为:[Fraction alloc]
想新创建的Fraction类发送一条消息。该alloc方法继承自父类。如果向某个类发送alloc消息,便获得该类的新实例。Alloc方法保证对象的所有实例变量都变成初始状态。在创建对象之后还必须对它进行初始化:
myFraction=[Fraction init];
Init方法用于初始化类的实例变量。将init消息发送给myFraction.init方法也可以返回一个值,即被初始化的对象。将返回值存储到Fraction的变量myFraction中。
Fraction*myFraction;
myFraction前的星号*表明myFraction是Fraction对象的引用或指针。变量myFraction实际上并不存储Fraction数据而是存储了一个引用,表明对象数据在内存中的位置。在声明myFraction时它的值是未定义的,它没有被设定为任何值,并且没有默认值。
相关文章推荐
- Neither BindingResult nor plain target object for bean name 'internationalMakePrice' available as re
- JObject——直接转化为已知的对象类型
- Objective-C——消息、Category和Protocol
- AS3 SharedObject的保存路径
- c++ class and objects
- JSON 之 SuperObject(1)
- Objective-C中@property的所有属性详解
- 关于Objection 框架或解耦合方案
- java.util.NoSuchElementException: Timeout waiting for idle object
- java.util.NoSuchElementException: Timeout waiting for idle object
- Objective-C编码规范:26个方面解决iOS开发问题(转)
- Objective-C内存管理教程和原理剖析(四)
- Objective-C内存管理教程和原理剖析(三)
- 怎么解决python中TypeError: can't pickle instancemethod objects的这个错误
- 为什么Git比SVN好
- 目标检测之LibPaBOD(a LIBrary for PArt-Based Object Detection in C++)
- GET请求和POST请求的区别
- rowid,object_id和data_object_id
- Object中的一些方法
- object-ocUI之导航控件