`
lovebirdegg
  • 浏览: 175516 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

《iPhone应用程序开发指南(基础篇)》第三章 3.4

阅读更多

原文地址:http://www.aisidechina.com/blog

版权所有: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应用程序开发指南(基础篇)》一书)。

0
1
分享到:
评论

相关推荐

    iPhone应用程序编程指南-中文版 pdf

    这本书的中文版使得更多的中国开发者能够轻松掌握iOS应用开发的技术和技巧。 在iPhone应用程序编程中,首先需要了解的是Objective-C或Swift编程语言。Objective-C是苹果长期以来的官方开发语言,而Swift则是近年来...

    iPhone应用程序开发指南.pdf

    iPhone应用开发指南还强调了开发过程中所需的各类文档和资料,包括API参考、编程指南以及各种开发工具和技术资源。这些文档可以帮助开发者学习如何使用iOS的框架和API来实现特定的功能,比如用户界面设计、数据存储...

    iPhone应用程序编程指南

    - **iPhone 开发指南**:介绍了 iPhone 开发过程中的重要信息,包括设备配置、使用 Xcode 进行编译、运行和测试软件等方面。 - **Cocoa 基本原理指南**:涵盖了 iPhone 应用程序开发中常用的设计模式和最佳实践,...

    iPhone应用程序编程指南(中文版)

    综上所述,“iPhone应用程序编程指南(中文版)”不仅是一份详尽的开发指南,也是学习和掌握iOS开发不可或缺的重要资料。通过遵循这份指南中的建议和指导,开发者可以更好地构建出高质量的iPhone应用程序。

    iPhone应用程序开发指南.pdf.

    《iPhone应用程序开发指南.pdf》是一本深入探讨iPhone应用开发的专业书籍,主要针对想要在iOS平台上构建应用程序的开发者。这本书详细介绍了从零开始学习iOS开发所需的知识点,包括Swift编程语言、Xcode集成开发环境...

    iPhone应用程序开发指南

    iPhone应用程序开发指南,Chapter01 iPhone开发前的准备;Chapter02 开发工具介绍;Chapter03 Objective-C基础;Chapter04 几个重要的Cocoa类;等15章内容

    iPhone应用程序开发指南.中文.pdf

    ### iPhone应用程序开发指南知识点概述 #### 一、引言与目标读者 - **目标读者**:本指南旨在为iOS开发者提供全面的技术指引,适合不同经验水平的开发者阅读。 - **先决条件**:具备一定的编程基础,特别是对...

    iPhone应用程序编程指南中文版PDF

    - **必读文档**:开发者在开始开发iPhoneOS应用程序前,应阅读iPhone开发指南,了解开发过程中的关键信息,以及如何使用Xcode等工具进行编译、运行和测试软件。 - **设计模式介绍**:Cocoa基本原理指南深入探讨了...

    ios应用程序编程指南

    综合来看,《iOS应用程序编程指南》是一份综合性的开发文档,它不仅涵盖iOS应用开发的基础知识,还包括了高级技术,如视图控制器的使用、数据管理等。通过遵循这些指南,开发者可以构建出稳定、高效且用户体验良好的...

    iPhone应用程序编程指南中文高清版

    - **iPhone开发指南**:详细介绍iPhone开发流程中的工具配置、设备配置、软件编译、运行测试等方面。 - **Cocoa基本原理指南**:深度讲解Cocoa框架的基础理论,适合初学者入门。 总之,本指南全面覆盖了从基础预备...

    iPhone应用程序编程指南-中文版

    - **iPhone开发指南**:详细介绍开发过程中的工具配置、设备设置、软件构建、运行和测试等内容。 - **Cocoa基本原理指南**:提供关于iPhone应用程序开发中设计模式的基础知识。 - **其他重要文档**:建议开发者阅读...

    iPhone应用程序编程指南 中文

    ### iPhone应用程序编程指南知识点 #### 一、介绍 **谁应该阅读本文?** - 对于希望为iPhone开发应用程序的专业开发者来说,本指南是一份必备参考资料。 - 适用于那些熟悉编程语言如Objective-C或Swift,并对iOS ...

    《iPhone应用程序开发攻略之iPhone特色传感器应用》

    本书的标题为《iPhone应用程序开发攻略之iPhone特色传感器应用》,从这个标题我们可以看出,这本书是专门针对iPhone应用程序的开发者所编写的一本关于iPhone特色传感器的应用开发教程。iPhone特色传感器包括但不限于...

    软件创富密码:iPhone应用程序开发攻略之深入浅出Objective-C2.0分卷一

    《软件创富密码:iPhone应用程序开发攻略之深入浅出Objective-C2.0(适用于ios4)》系统地介绍了关于使用Objective-C2.0开发iPhone应用程序的基础知识,涵盖各种开发工具的操作技巧、框架(Framework)内部的工作原理...

Global site tag (gtag.js) - Google Analytics