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

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

阅读更多

版权所有:AisideChina

本博客将在今后陆续进行本书的连载,敬请关注!
更多内容请大家购买正版《iPhone应用程序开发指南(基础篇)》

 

3.3             解析Note

文件类型

        首先来看一下打开文件的名称:Note.m。在Objective-C中,扩展名为.m的文件,与C++语言中扩展名为.cpp的文件相同,均是程序的源文件。而程序的头文件与C++语言中的头文件一样,扩展名同样是.h。

引入头文件

        1处的#import <Foundation/Foundation.h>表示程序在此处要引用Foudation框架中的Foundation.h头文件。

        Objective-C中的“#import”语句同C++中的“#include”语句类似,表示头文件的引入。但是还记得在C/C++中是如何避免同一个头文件被引入两次的吗?是在文件的一开始使用#ifdef命令来判断一个头文件是否已被加载过了。然而使用“#import”的时候就无需如此,使用“#import”引入一个头文件时,无论在同一个地方导入同一个头文件几次,都可保证该文件只被包含一次。 

Tips:

所谓框架,就是一个集合,其中包含着头文件、库以及图像和声音等资源文件。每个框架中均有一个主头文件,该主头文件包含了框架中的各个头文件,一旦引入了主头文件,就可以在自己的程序里使用任何在该框架里声明的类。
 

        #import <Foundation/Foundation.h>表示要引入的文件是Foudation框架中的主头文件Foundation.h。这样,我们就可以使用所有Foudation框架中的类了,比如NSAutoreleasePool就是Foudation框架中的一个类。

程序的入口——main方法

        在 2处看到int main(int argc, const char * argv[ ])和下面的return 0,跟C语言中的main函数一样,这里表示该应用程序的入口。

创建自动释放池对象

        在3 处的NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init],声明并初始化了一个可以用于自动释放对象的缓冲池,在此以C++的语法形式将它拆分来表现一下,理解起来可能就容易一些了:

(1)      NSAutoreleasePool * pool:同在C++中一样,这里表示声明了一个NSAutoreleasePool类型的指针,并命名为pool。NSAutoreleasePool类型用于构建一个缓冲池来存放各种对象和变量,缓冲池是用于进行内存管理的。关于内存管理方面,在iPhone开发中可以说是非常重要且较为复杂,所以为使你可以系统牢固的掌握,内存管理的知识将放在后面进行详细的讲解。在这里只需知道,为了程序的正常运行,pool申请了一块公用的内存。

(2)      [[NSAutoreleasePool alloc] init]:其中[NSAutoreleasePool alloc]可以理解为在C++中的NSAutoreleasePool:alloc()形式。

        alloc在这里,就是一个用于建立指定对象(也就是这里的pool)的方法,它负责为该对象分配内存,并返回该对象的指针。但为指定对象开辟的内存中并无任何数据。那么下面紧跟的init相信你应该很容易的理解了——为开辟了内存的对象调用初始化函数来进行初始化。这两句结合起来就相当于C++中的new运算符。

        对上面代码中的中括号“[ ]”是不是有些奇怪?如在表3-1中所见的[对象  方法名:参数A  方法名:参数B  …],用一对中括号“[]”将对象与要调用的方法括起来,并在中间用空格隔开,便是Objective-C中调用方法的形式。而且在Objective-C的方法中,方法所需要的参数可以放在函数名的任何位置,使用“:”来表示要插入参数的位置,紧跟在“:”之后添加需要的参数。正如上面所示:“方法名:参数A  方法名:参数B”。

(3)      [pool drain]:销毁缓冲池及其中的内容,并释放内存。

   创建NSString类型对象——我们的记录

        4处的NSString *note1 = [NSString stringWithString:@"Running at 6 o’Clock"]与NSString *note2 = [NSString stringWithString:@"Eating at 7 o’Clock"],同前面的NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]一样用于创建对象,只是在这里,使用了NSString的stringWithString:方法创建了两个NSString类型的指针note1与note2。这样程序便不再是单纯的输出“Hello World”了,它将可以使用这两个NSString类型的对象来记录我们自己的事情。

        NSString类型相当于C++中的String类型,它是Foudation框架中的一个用于处理字符串的类型,其中提供了很多用于字符串处理的方法,其相关内容将在后面进行详细的讲解。

NSLog输出

        下面就来讲解一下在本程序中5处的用于向控制台输出记录的两句代码:NSLog(@”%@”, note1)与NSLog(@”%@”, note2)。NSLog 相当于C++中的printf方法,在这里通过NSLog方法向控制台输出了note1与note2对象中所包含的信息。现在就来仔细分析一下这两条语句.

Tips: 

NSLog中的NS是NextSTEP的缩写,它表示这个函数是来自Cocoa工具包的。Cocoa对其所有函数、常量和类型的名称均添加了NS前缀. 
 

(1)    NSLog第一个参数是@”%@”,在Objective-C中,@”sometext”的形式,就表示要把引号内的字符串(如sometext)当作一个NSString类的对象来进行处理。该字符串同printf中的一样,可以接受格式说明符,如%d等,用来表示在此处要插入一个整数类型(或者其他格式说明符对应的类型)的数值,并需要在该函数的后续参数中提供具体的相应数值。最后,NSLog将会在控制台中输出该字符串。

(2)      在程序要输出的字符串中,使用了类型说明符“%@”:表示在此处输出一个对象的描述,但是如何输出一个对象的描述呢?在Objective-C中,每个对象都有-(NSString*)description方法,在使用“%@”类型说明符来输出某种类型的对象时,就会调用这个方法,并在“%@”的对应位置输出-(NSString *)description方法的返回值。如果需要某类型的对象按照自己的意图进行输出,就需要重写-(NSString *)description方法。但事实上,如果今后使用“%@”类型说明符的话,大多数情况应该是需要输出一个NSString类型的对象,即一个字符串,NSString的-(NSString *)description方法将会输出这个字符串对象本身所包含的内容。

(3)      在今后开发过程中,会经常使用到需要格式化的字符串,所以现在总结几种常用的格式说明符如表3-2中所示。

表3-2 类型说明符  

 类型说明符 代表类型
%@ 对象
%s 字符型
%d 整型
%u 无符号整型
%f 浮点类型

 

        上面讲解了一些关于Objective-C与C/C++的差异。但因为Objective-C是C的一个超集,所以在C中声明变量的关键字、控制程序的分支循环结构、运算符等,在Objective-C中也同样适用,比如用int声明整数类型,float声明浮点类型,使用for语句来进行固定次数的循环,用if/else语句来进行条件选择等。

        下面是一段与C/C++无异的小程序,可放在Objective-C程序中顺利运行,并将成功在控制台输出数字0到9:

==================================================

代码3.3  Objective-C基本语法示例

int i = 0;

for(i = 0 ;i<10; i++){

                  NSLog(@”%d”, i);

}

================================================

分享到:
评论

相关推荐

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

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

    iPhone应用程序开发指南.pdf

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

    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

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

    ios应用程序编程指南

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

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

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

    iPhone应用程序编程指南 中文

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

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

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

Global site tag (gtag.js) - Google Analytics