FLYBLOG » 文章 » iPhone开发之Objective-C学习(3)

iPhone开发之Objective-C学习(3)


到现在为止,已经学习了如何调用类方法以及创建对象。 到目前为止我们还没有看到如何才能定义一个类, 上两次的内容已经多次涉及到类及类的成员,现在我们可以学习一下如何才能定义一个自己的类。

设计一个类(接口)

一般来讲创建一个类需要两部分,首先是申明类的头文件ClassName.h, 还有类实现的源文件ClassName.m, 如果你想在程序中混合C/C++编程那么就需要使用.mm或者.M ,这样编译器会以此判断该类中混合了Objective-C 和 C语言。 ClassName.h 头文件中定义类的成员变量以及公有成员函数, 源文件中则包含实际的实现代码,如果你想定义私有函数可以放在实现源文件中,不过需要注意的是必须在该函数被调用调用之前。下面用一个具体的例子来学习如何定义自己的类

1
2
3
4
5
6
7
#import <Cocoa/Cocoa.h>
@interface Friend : NSObject
{
	NSString* 	name;
	int		age;
}
@end

我们从NSObject类继承一个新的类Friend,#import导入Cocoa库的Cocoa.h 头文件, @interface 表示申明一个类定义,也是类定义的开始, 在花括号内是两个成员变量, 最后@end表示类定义结束。对于成员变量可以使用Assessors访问器来访问,也可以申明方法来存取变量

1
2
3
4
5
6
7
8
9
10
11
12
#import <Cocoa/Cocoa.h>
@interface Friend : NSObject
{
	NSString* 	name;
	int		age;
}
 
-(NSString*) getName;
-(int)	getAge;
-(void) setName:(NSString*) newName;
-(void) setAge:(int) newAge;
@end;

可以定义存取的方法,如 setName 和 getName。 再来看看实现文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#import <Cocoa/Cocoa.h>
@implement Friend
-(NSString*) getName
{
	return name;
}
-(int) getAge
{
	return age;
}
-(void) setName:(NSString*) newName
{
	name = newName;
}
-(void) setAge:(int) newAge
{
	age = newAge;
}
-(id) init
{
	if( (self=[super init]) )
	{
		[self setName:@&quot;Mike&quot;];
		[self setAge:22];
	}
	return self;
}
 
-(void) dealloc
{
	[name release];
	[super dealloc];
}
@end;

除了要实现定义的成员函数, 还需要重新实现初始化以及析构函数init 和 dealloc, init中的第一行显示由父类来创建一个类对象付给self, 如果成功则给成员变量赋初值, 然后返回self。 在析构释放内存空间时,先把子类中的所有需要释放的对象都release, 然后发送release消息给父类释放内存。

怎么样,定义新类是不是很简单呢? 这里需要注意的几个问题:

  1. 类定义的开始与结束

    由@interface开始,@end; 结束
  2. 实现类时也需要有开始结束的标致

    @implement表示开始, @end;表示结束
  3. 一般都从NSObject继承定义新类, 否则将需要自己实现初始化以及释放等等代码
  4. 如果垃圾回收功能处于打开状态, dealloc将不会被调用, 这时需要实现finalize方法

 

待续。。。


原创文章如转载,请注明
转载自:FLYBLOG [http://www.flyblog.info]

本文链接地址:http://www.flyblog.info/catprogramming/157.html

标签:    
分类: 编程开发  | 评论: (0)  |  浏览:( 143 )


名称[Name](*):
邮箱[Email](*):
网站链接[Website]:
正文[Message](*):