读书频道 > 移动开发 > ios开发 > 苹果开发之Cocoa编程(原书第4版)
3.2 使用已有的类
2012-10-13 13:05:00     我来说两句 
收藏    我要投稿   
本书是在Aaron多年教学经验的基础上进行了总结提炼的精华之作,加之前面3版不断推敲和完善,已经成为学习Cocoa编程的入门级经典书籍。本书系统介绍了Objective-C语言、Cocoa主要的设计模式、必要的开发工具Xcode...  立即去当当网订购

启动Xcode,关掉正在做的其他一些项目。在File菜单下,选择 New → New Project,在弹出的面板上选择创建命令行工具(见图3-1)。


 

command-line tool并不像其他工程类的应用程序一样,它没有可视用户界面,一般在命令行方式下运行或者作为daemon程序在后台运行。这里,需要经常修改command-line tool应用程序的main函数。

将项目名称命名为lottery(见图3-2)。与一般的应用程序不一样,command-line tool应用程序的名字使用小写字母。设置Type为Foundation。


 

新项目打开后,选择main.m文件,按如下操作编辑该文件:


 

下面是对代码的详细讲解:

这里包含Foundation框架内所有类的头文件。头文件是预编译的,所以编译它们并不费时间。

 

Main函数的声明与UNIX程序相同。

 

这行代码为括号内的代码定义了自动释放池,下一章将讨论自动释放池的重要性:

 

这里声明了一个变量:array是指向类NSMutableArray实例的一个指针。注意,现在还没有array存在,只是声明了一个指向array的指针:

 

这里创建了一个类NSMutableArray的实例,使得array变量指针指向它:

 

循环内部创建了一个命名为newNumber的本地变量,指向NSNumber的一个新实例,然后,添加对象到array。

Array并不是对NSNumber对象的复制,它只是保持指向NSNumber对象的指针。Objective-C程序员很少直接复制对象,因为极少有必要这么做。

 

现在将array中的内容打印到控制台。NSLog是一个跟C函数中的printf()很像的函数,它由一个格式字符串和一个以逗号分开的变量列表组成,这些变量在打印时替换格式字符串。在打印字符串时,NSLog还会在开头打印出应用程序的名字和当前的时间戳。

在printf函数中,可使用%x以十六进制格式打印整数。而NSLog函数同样支持printf函数中的格式字符,还可使用%@打印对象。使用%@时,给对象发送一个description描述消息,返回一个字符串来代替%@。下面很快就详尽探讨description方法。

所有NSLog()支持的字符列在表3-1中。

表3-1 Objective-C格式字符串中可能支持的表示符

符号  显示
%@ id
%d、%D、%i long
%u、%U unsigned long
%hi short
%hu unsigned short
%qi long long
%qu unsigned long
%x、%X 十六进制打印unsigned long
%o、%O 八进制打印unsigned long
%f、%e、%E、%g、%G double
%c Unsigned char-ASCII字符
%C Unichar-Unicode字符
%s char *(以空字符结束的ASCII字符组成的字符串)
%S unicahr *(以空字符结束的unicode字符组成的字符串)
%p void *(以Ox开头的十六进制的地址空间)
%% A%字符

注意

是否@ “The number at index %d is %@”之前的@有些奇怪呢?记住Objective-C是C语言的扩展,其中一个扩展就是字符类NSString。在C语言中,字符串是指向以null结尾的保存字符串的连续内存块的指针,C的字符串和NSString类的实例可以用在同一个文件中。为区分常量C字符串和常量NSString,必须将@ 字符放在NSString常量的前面。

 

在Cocoa编程中经常会用到NSString类,任何需要使用字符串的地方都倾向于使用NSString类。假如已经在很多地方使用了C语言字符串,开发者也会经常使用char *。开发者库在C风格的字符串和NSString类字符串之间切换。




由于NSString类能够存储Unicode字符串,但对于C风格的字符串,则需要开发者正确处理很多类型的字符串转换。这有些困难,而且比较耗时间。(除了多类型的问题外,开发者还必须处理某些语言从右向左读取的问题。)因此,应该尽可能使用NSString类代替C风格的字符串。

假如没有出现错误,main()函数以返回0结束。

 

图3-3是运行完成后的 command-line tool程序。(假如控制台没有出现,选择View → Show Debug Area选项,确保右边的控制台功能。)

 

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.1 创建和使用实例
下一篇:3.2.1 给nil发送消息
相关文章
图文推荐
1.3.5 有限的屏幕尺
1.2 必备条件
精通iOS开发 : 第7版
3.5 iFunBox
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站