本帖最后由 卧龙小 于 2014-9-22 15:39 编辑
对象是类的独特表示,每个对象都包含一些使用的信息,方法提供改变和访问这些数据的手段。
程序在逻辑上分为以下三部分
一 @interface 用于描述类和类的方法,类的声明
1.定义新类时,首先需要告诉Object-c编译器该类来自何处,必须为它的父类命名。
2.必须定义该类对象使用时,需要用到的方法类型
@interface NewClassName : ParentClassName
propertAndMethodDeclarations;
@end;
实例:
- @interface Fraction : NSOject
- -(void) print;
- -(void) setNumerator : (int) n;
- -(void) setDenominator : (int)d;
- @end
复制代码
新类名字为Fraction,其父名为NSObject ,NSObject 类在 NSObject.h中定义,导入foundation.h 文件时,程序自动包含这个类
方法:-(void) print;
开头的负号(-)通知Object-c 编译器,该方法是一个实例方法,此外如果用(+)则表示类方法,类方法是对类本身执行某些操作的方法,不需要实例即可调用。
1.返回值
申明方法时,需要告诉编译器是否有返回值,如果有返回值,则需要注明是返回值的类型。返回值类型在正号和负号后的括号中注明
2.参数
参数通过参数名去的 括号 指明。
二@implementation 用于描述数据,类对象的实例变量存储的数据,并实现类声明的代码
@implementation 包含@interface 声明部分的实现,格式如下:
- @implementation NewClassName
- {
- memberDeclarations
- }
- methodDefinitions
- @end
复制代码
NewClassName 表示名称和 @interface 名称相同,可以在父名称后使用冒号,如同@interface 部分使用冒号一样,但通常不这样做
@implementation Fraction:NSObject
memberDeclaration 部分指定了那种类型的数据将要存储到Fraction中,以及数据的名称,是类的实例变量
methodDefinitions 部分是实现@interface声明方法。
实例:
- @implementation Fraction
- {
- int numerator;
- int denominator;
- }
- -(void) print
- {
- NSLog(@"%i/%i",numerator,denominator);
- }
- -(void) setNumerator:(int) n
- {
- numerator=n;
- }
- -(void) setDenominator:(int) d
- {
- denominator=d;
- }
- @end
复制代码
三 program部分 程序目录的实现功能
实例:
- int main(int argc,char * argv[])
- {
- autoreleacepool{
- Fraction *myFraction
- //创建一个实例
- myFraction = [Fraction alloc];
- myFraction = [myFraction init];
- //设置参数
- [myFraction setNumerator:1];
- [myFraction setDenominator:1];
- //调用打印方法
- NSLog(@"The value of myFraction is:");
- [myFraction print];
- }
- }
复制代码
说明:
Fraction *myFraction
表示创建了一个 Fraction 对象 myFraction ,* 表示myFraction 是 Fraction 对象的引用(或指针),变量myFraction 并不存储Fraction的数据,而是存储的一个引用,表面对象数据在内存中的位置,申明myFraction 时,它的值未定义,并且没有默认值。
myFraction = [Fraction alloc];
alloc 是 cllocate 的缩写,为新对象分配内存存储空间,alloc 方法保证对象所有实例变量都成初始状态,并返回存储数据的位置(对数据的引用),赋给实例
myFraction = [myFraction init];
init 方法用于初始化类的实例变量,init方法返回初始化的对象,并将返回值存储到myFraction变量中。
alloc init 方法通常组合在一起
myFraction=[[Fraction alloc]init];
通常把创始和初始合并到一行
Fraction *myFraction = [[Fraction allo] init];
注意:
在Xcode4.2之前,需要给对象发送release消息,通知系统释放内存对象,这在内存管理中成为手工引用计数,4.2之后,依靠系统来释放内存对象,实现了自动应用计数( automatic reference counting)
|