之前写学习记录好久了,后来才发现一直写在日记里的别人都看不到,渐渐的懒病又犯了,现在下定决心将文章放出来,激励自己。(之前一直在博客园里写的)
找来找去,觉得还是看E文资料学习iphone开发比较靠谱,因此以翻译Programing in Objective-c2.0一书,做为学习objective-c的主线。
第一章基本是扯些无用的,和语法方面基本没什么关系。从第二章开始。
2
用objective-c编程
在本章中,我们将教您如何写出您的第一个objectve-c程序。你到目前还不会使用它,那将是我们下一章节的主题。我们希望您能够明白如何写一个程序,并且编译运行它。我们将特别的同时在windows和mac上操作。
开始,我们选择一个相当简单的例子:一个在你的屏幕上显示“Programming is fun!”短语的程序。事不宜迟,Program 2.1显示了一个完成该任务的objective-C程序。
Program 2.1
//First program example#import
<Foundation/Foundation.h>int main(int argc,const char * argv[]){
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
NSlog(@"Programming is fun!");
[pool drain];
reutrn 0;
}
编译并运行程序
在我们详细解释这个程序之前,我们需要先走完编译与运行的步骤。你可以用x-code编译和运行你的程序或者使用GNC Objective-c在终端窗口中编译它。我们将两种方法贯穿在以上步骤中。现在你可以决定你希望在哪个平台上编译你的程序。
使用Xcode
Xcode是一个高级的应用程序可以让你很容易的输入、编译、调试,并执行程序。如果你准备在MAC系统上开发一个很重要的应用程序,学会如何使用xcode这个强力工具是非常有价值的。我们让你从这里开始。稍后,我们回到xcode并且带你贯穿开发图形界面应用程序的所有复杂步骤。
首先,Xcode 位于开发文件夹下的一个叫做Application的子文件夹中。它的图标如图2.1所示
(图2.1)
打开Xcode,在菜单栏的File中选择New Project(见图2.2)
(图2.2)
将出现如图2.3的窗口。
(图2.3)
选择application,找到comand line Tool 下面的Type选择foundation点击Choose确定。(此处与原作略有不同,因为版本差别,造成显示略有差异。)给项目取一个名字保存即可。我参照原作,给项目取名为prog1.保存后,将出现如图2.6所示窗口。
(图2.6)
(按原著所说,如果你之前已经使用过过Xcode或者更改了配置你显示的窗口将略有不同。)
现在是时候写你的第一个程序了。选择左栏中的prog1.m文件此时你的窗体将变成如图2.7所示
(图2.7)
objective-c的源文件以 .m 结尾。下表是其他常用的文件扩展名。(取自原著)
回到Xcode项目窗体。在靠右边的部分你可以看到如下代码。
1 #import<Foundation/Foundation.h>
2 int main(int argc,const char * argv[]){
3 NSAutoreleasePool * pool=[[NSAutoreleasePool alloc] init];
4 //insert code here...
5 NSLog(@"Hello World!");
6 [pool drain];
7 reutrn 0;
8 }
你可以在这个窗体中写你的文件,Xcode已经为你创建了一个模板文件。(这样太书面化的翻译实在是太别扭了,总感觉有种抄书的感觉,我在稍后的内容中,将全部以我的理解来写,尽量说成大白话的形式,便于领会。其中不乏省略一些个人感觉没有实际意义的内容。)
现在我们在程序的开头写如下代码:
//First program example
objective-c中也是以 // 作为注释。
不用担心在你屏幕上的各种不同颜色的代码,在Xcode中,保留字,值类型等都有着不同的颜色来表示。
现在是时候在Xcode编译并且运行你的第一个程序了,点击菜单栏上的“Build and Run”按钮。在此之前你需要保存你的程序,你可以通过点击菜单栏中的File,选择Save选项保存,又或者你直接点击“Build and Rund”按钮,编译器会提示你保存你的文件。
在菜单栏中的Build下,你可以选择Build或者Build and Run.我们选择后者,因为它会在编译后自动运行只要你的程序没有错误。同样的你可以点击Build,这时候工具栏上会出现Go图标。
如果你的程序中有错误,你会在这一步发现错误信息。在这种情况下,返回并且修正错误,重复刚才的动作。当程序中所有错误被修复,一个标题为prog1 - Debugger Console 的新窗体将出现在你眼前。这个窗体包含你程序的输出结果。
现在你已经用Xcode完成了一个程序的编译和运行部分。下面总结用Xcode创建一个新程序的过程:
1、打开Xcode 应用程序。
2、如果这是一个新工程,请选择New Project
3、选择程序类型,Foundation Tool,点击Choose确定。
4、给工程命名,点击Save保存。
5、在右边的窗体中找到prog1.m在下面输入你的代码。
6、点击File下面的Save保存你对程序的修改。
7、通过点击Build and run ,编译和运行你的应用程序,。
8、如果你得到很多错误信息,修复后,重复第6到7步。
一些人可能希望避免学习使用Xcode来进行objective-c 的学习。如果你之前用过UNIX命令行,你可能希望通过Terminal Application来写、编译、运行你的程序。下面我们来说明如何使用它们。
第一步打开你Mac中的Terminal application 。Terminal application在应用程序文件夹下,打开后,你会看到如图2.10所示。
(图2.10)
你可以给objective-c文件起任何名字,只要保证最后以.m 结尾。这将告诉编译器你有一个objective-c程序。
接下来,你需要在该文件中编写你的程序,你可以使用GNU Objective-c编译器,它的名字叫GCC,用来编译和链接你的程序。下面是一段普通的GCC命令行:gcc-framework Foundation files -o progname(因为我不用命令行的,下面的懒得看了,直接入正题。)
详解你的第一个程序
现在你已经熟悉了编译运行一个程序的步骤,让我们仔细看看这第一个程序。
1 //First program example
2 #import <Foundation/Foundation.h>
3 int main(int argc,const char * argv[])
4 {
5 NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
6 NSlog(@"Programming is fun!");
7 [pool drain];
8 reutrn 0;
9 }
在objective-c中,是区分大小写字母的。第一个要介绍的概念是注释。如: //First program example
注释是用来在程序中标记,或提高程序可读性的。正确的使用注释是有很多好处的。
在objective-c中,使用注释有两种方法。一种是单行注释,以两个 / 开头,如: //First program example
另一种是多行注释,以 /* 开头,*/ 结尾。注释方法与c#中一样,后面就剩下些说养成写注释的好习惯等等好处,就不想写了,相信写过程序的人都知道在拿到一个别人写到一半的程序,却发现里面没有几行注释的时候,你心里会作何感想,又或者是自己命名不规范,都是一堆label1,button2 的时候,即使是自己写的程序,要是没有注释的话,等你过个几天再看的时候肯定也会崩溃的。
继续回到之前的代码,在程序的第二行,我们可以看到#import,这是告诉编译器我们在引用一个叫做Foundation.h的文件,类似于#include。表示里面有些你需要用到的方法什么之类的。
下面详细说一下main函数。
main是一个特殊的名字,指出程序的入口。在main之前的保留字符 int 表示main函数的返回值,表示返回一个int(即整形)的值。我们现在先忽略圆括号中的内容,我们将在后续章节中详谈。
现在你已经初步接触了main函数,你应当详细指定它如何执行。这些取决于在一堆花括号中的所有代码。所有的程序声明都在花括号以内。
程序中的第一个statement :
NSAutoreleasePool * pool=[[NSAutoreleasePool alloc] init];
用来在内存中申请空间。我们将在第17章,内存管理中,详细讨论这些。现在先不讨论这些。
下一句 @"Programming is fun!"
在括号中的 @符号表示这是一个NSString 对象(objective-c中的字符串)。
NSLog是object-c,library中的函数,用来显示。在这样做之前,虽然它可以显示日期,时间,程序执行结果,程序名字,或者其他数字,我们不在这里详述。
今天先到这里吧,看了半天的鸟文太累。 p21