Objective-C基础——程序的整体语法结构(02)

本文详细介绍了Objective-C中对象的创建、初始化、方法调用及内存管理过程,包括如何使用`alloc`和`new`创建对象,如何通过类的方法设置属性值,并解释了自引用对象和内存管理原则。
接下来我们看一下ObjC中的另一个标示部分……
@implementation 部分的一般格式

@implementation  NewClassName
methodDefinitions;
@end
//NewClassName表示的名称和@interface 部分的类名相同

看一个简单的例子:
//***************************
//Fraction.h  文件
@import <Foundation/Foundation.h>
@interface Fraction : NSObject
{
int numerator;
int denominator;
]

-(void) print;
-(void) setNumberator : (int) n;
-(void) setDenominator : (int) d;
@end



//Fraction.m  实现文件
@implementation  Fraction
-(void)print
{
NSLog(@"%i/%i",numerator,denominator);
}

-(void)setNumberator :(int)n
{
numerator = n;
}

-(void)setDenominator :(int)d
{
denominator  = d;
}
@end
//***********************************************
对程序就不分析了,不理解的地方请查看相关资料。
下来我们看一下对象的获取。
 Fraction  *myFraction = [[Fraction alloc] init];
 
 获取对象的实例并初始化了其实例变量(可以这样理解:将alloc消息发送给Fraction类请求创建一个新实例,然后向新创建的实例对象发送init消息来进行初始化对象)。
 另一种方法:
 Fraction  *myFraction = [Fraction  new];//这种方法一般不使用,可作为了解
 
 对象调用的方法:  [myFraction  setNumerator : 1];
 使用完后要释放Fraction对象的方法:[myFraction  release];
 注:创建一个新的对象,都要请求分配内存,在完成该对象的操作后,必须释放其所用的内存空间。(Object-c的内核是C语言的,并基于C语言实现OOP的一些特性。Object-c是对C语言的扩展,这和C++的前身Better-c有很大的相似之处,Object-c的新版本里实现了和Java类似的垃圾回收机制,但基于iphone平台的资源限制,iphone平台并不支持垃圾回收机制。)
 外部要访问实例变量需要通过类的方法来检索,不能直接访问。
 示例:
 //******************
 //Rectangle.h 文件
 @interface  Rectangle : NSObject
 {
int width;
int height;
 }
 
 @property  int width, height;
 -(int)area;
 -(int)perimeter;
 -(void)setWidth:(int)w andHeight:(int)h;
 @end
 
 
 //Recangle.m
 @import "Rectangle.h"
 
 @implementation Rectangle
 @synthesize width, height;
 -(void)setWidht:(int)w andHeight(int)h
 {
widht = w;
height = h;
 }
 
 -(int)area
 {
return widht * height;
 }
 -(int)perimeter
{
return (width + height) *2

@end




//Square.m
#import"Rectangle.h"
@interface Square :Rectangle
-(void)setSide :(int) s;
-(int)side;
@end


//Square.m


@import "Square.h"
@implementation Square :Rectangle
-(void)setSide :(int) s
{
[self setWidth :  s andHeight: s]
}
-(int) side
{
return width;
}
@end
//***********************


self关键字是用来指明对象是当前方法的接受者。
例如下来的这个例子(正方形)的方法实现:
-(void)setSide : (int) s
{
[self setWidth: s  andHeight : s]
}
利用其父类的setWidth:andHeight:方法来实现的。


调用消息的类可以不知道如何响应这个消息的。如果不知道如何处理这个消息,它会自动的将这个消息转给父类,还不行就转给父类的父类,都没有找到就会报错。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值