版权所有:AisideChina
本博客将在今后陆续进行本书的连载,敬请关注!
更多内容请大家购买正版《iPhone应用程序开发指南(基础篇)》
3.4 Objective-C中的面向对象
面向对象编程(Object-Oriented Programming,简称OOP)如今已不再是什么新鲜的术语了。Objective-C就是一种面向对象编程语言。
在Objective-C中创建一个新类时,通常先要在一个与类名相同的.h文件中,使用关键字@interface来声明该类;然后在与类名相同的一个.m文件中,使用关键字@implement来实现该类。
本节将会对如何在Objective-C中声明和实现一个类进行讲解。
类的声明
在Objective-C中声明一个类时,需要使用@interface关键字,它类似C++中的class关键字。声明一个类的格式如下:
=================================================
代码3.4 Objective-C中类的声明 |
@interface ClassName : SuperClass {
@private
vType variable1;
……
}
+ (rType)classMethodWithArg1: (arg1Type)arg1,
andArg2: (arg2Type)arg2;
- (rType)instanceMethodWithArg1:(arg1Type)arg1
andArg2:(arg2Type)arg2;
@end
================================================
类的实现
对一个类进行了声明之后,还必须要实现该类的方法才可以创建对象。
===================================================
代码3.5 Objective-C中类的实现 |
@implement ClassName
Methods Implementation
……
@end
===================================================
在@implement与@end之间实现类的各个方法,方法可以是从父类继承下来的,也可以是自己声明的。
(具体讲解与实例请参见《iPhone应用程序开发指南(基础篇)》一书)
初始化方法
前面我们讲到过要创建一个可用的对象,在Objective-C中需要两个步骤来完成:创建对象与初始化对象。创建对象即我们前面讲到过的alloc方法,alloc方法负责为该类对象分配一个足够大的内存,然后将整块内存区域全部初始化为0,也就是使被创建的对象不包含任何数据:比如int类型变量全被初始化为0,float类型变量全被初始化为0.0,指针类型全被初始化为nil等。
创建之后便可以调用初始化函数来对对象进行初始化。由于任何Objective-C类都是NSObject类的子类,所以它们都从NSObject类中继承了初始化方法init,但该方法对于各子类基本没有任何作用与意义,子类需要根据自己类的具体情况来重写初始化方法,从而达到想要的初始化效果。
但要通过初始化方法来对对象进行初始化,也并不是一定要使用继承自NSObject的init方法,通常情况下对对象进行初始化时往往需要一些参数。如NSString类的一个初始化方法:initWithString: (NSString *)aString,它表示要接收一个字符串aString,并用该字符串来对调用该方法的NSString对象进行初始化。
Tips:事实上,初始化方法与一般方法没有本质上的区别,它只是在名称上添加“init”字样来表示这是一个初始化方法。它将负责为类中某些成员变量赋值。我们可以将初始化方法理解为该类的一个特殊的成员方法。 |
对于NoteClass,我们可以在NoteClass.h文件中添加下面的一个初始化方法来对NoteClass类的对象进行初始化:
- (id)initWithDate:(NSString *)aDate andContent:(NSString *)aContent;
在NoteClass.m文件中,该方法的实现如下:
===================================================
代码3.9 -(id)initWithDate: andContent:的实现 |
- (id)initWithDate:(NSString *)aDate
andContent:(NSString *)aContent {
if(self = [super init]){
[self setDate:aDate];
[self setContent:aContent];
}
return self;
}
====================================================
(具体讲解与实例请参见《iPhone应用程序开发指南(基础篇)》一书)
属性
实现一个类时,还要为每一个变量实现其访问器,这是一个相当繁琐的工作。事实上,在Objective-C 2.0发布后,我们便可以很方便的使每一个变量自动生成其访问器,并使用点操作符“.”来实现对变量的存取操作。
要实现这个功能,可以将NoteClass.h文件修改如下:
===================================================
代码3.14 NoteClass.h文件 |
#import <Cocoa/Cocoa.h>
@interface NoteClass : NSObject {
NSString *date;
NSString *content;
}
@property (nonatomic, retain) NSString *date;
@property (nonatomic, retain) NSString *content;
– (id)initWithDate:(NSString *)aDate andContent:(NSString *)aContent;
– (id)initWithDate:(NSString *)aDate;
– (void)setDate:(NSString *)aDate;
– (NSString *)date;
– (void)setContent:(NSString *)aContent;
– (NSString *)content;
– (void)showNote;
@end
==================================================
在上面的代码中注释掉了date变量与content变量的访问器方法,取而代之的是@property (nonatomic,retain) NSString *date与@property (nonatomic, retain) NSString *content。
在Objective-C中,@property用来设置成员变量的读写属性(readwrite/readonly),赋值语义(assign/retain/copy)以及对于多线程的支持atomicity(nonatomic)。并且每组的各个选项只可以出现一个或者不出现,比如这个例子中的@property (nonatomic, retain) NSString *date,表示date变量不支持多线程,且在被赋值时将自动调用release方法来释放对旧值的所有权,然后调用retain方法申请对新值的所有权。下表对@property的各个选项进行了总结:(具体讲解与实例参见《iPhone应用程序开发指南(基础篇)》一书)。
相关推荐
iPhone应用程序编程指南-中文版 pdf iPhone应用程序编程指南-中文版 pdf iPhone应用程序编程指南-中文版 pdf
开发ios必须的书本之一,还有两本是《iPhone开发基础教程_2009.04_(美)Dave Mark, Jeff LaMarche著》 和《iPhone应用程序开发指南》,希望对你有帮助。
iPhone应用程序开发指南.pdf.iPhone应用程序开发指南.pdf.
iPhone应用程序编程指南iPhone应用程序编程指南iPhone应用程序编程指南
iPhone应用程序编程指南(中文版)iPhone应用程序编程指南(中文版)iPhone应用程序编程指南(中文版)iPhone应用程序编程指南(中文版)iPhone应用程序编程指南(中文版)
iPhone应用程序开发指南,Chapter01 iPhone开发前的准备;Chapter02 开发工具介绍;Chapter03 Objective-C基础;Chapter04 几个重要的Cocoa类;等15章内容
应用程序的程序包 14 信息属性列表 16 应用程序图标和启动图像 21 Nib文件 21 处理关键的应用程序任务 22 初始化和终止 22 响应中断 23 观察低内存警告 25 定制应用程序的行为 25 以景观模式启动 25 和其它应用程序...
iPhone应用程序编程指南(中文) 来自苹果开发者中心参考库
《软件创富密码:iPhone应用程序开发攻略之深入浅出Objective-C2.0(适用于ios4)》系统地介绍了关于使用Objective-C2.0开发iPhone应用程序的基础知识,涵盖各种开发工具的操作技巧、框架(Framework)内部的工作原理...
《Android移动应用开发(第3版)卷Ⅰ:基础篇》涵盖了Android开发从概念、技术到市场推广应用的全部主题,内容包括Android平台概览、Android应用程序设计精髓、Android用户界面设计精髓、Android应用程序设计精髓、...
iPhone应用程序编程指南.pdf 官方文档,开发必备
《软件创富密码:iPhone应用程序开发攻略之深入浅出Objective-C2.0(适用于ios4)》系统地介绍了关于使用Objective-C2.0开发iPhone应用程序的基础知识,涵盖各种开发工具的操作技巧、框架(Framework)内部的工作原理...
iPhone应用程序编程指南-中文版 iPhone应用程序编程指南-中文版
iPhone应用程序编程指南中文版PDF
iPhone应用程序编程指南-中文高清版
截至 20100209 最新版本《iPhone 应用程序开发全教程》。英文名: Beginning iPhone 3 Development Exploring the iPhone SDK.pdf,作者 Dave Mark & Jeff LaMarche。 内容预览: Prelims Contents at a Glance ...