苹果开发工具Xcode 和Interface Builder详解


  本文标签:Xcode Interface Builder

  苹果开发工具Xcode Interface Builder是本文要介绍的内容,很详细的介绍了两款开发工具的使用和操作方法  。不多说,我们一起来看详细内容讲解  。

  什么是Xcode?

  Xcode是Apple自己开发的,只运 行在Mac OS X平台下的IDE  。如果你想真正了解Mac OS X平台上的开发,就应该了解它  。当然,Mac OS X实现了POSIX,固然也支持传统的UNIX编程环境;Eclipse等Java开发工具也有Mac OS X版  。不过这些,你在Linux或者Windows平台也能体验到  。Xcode也并不神秘,Apple并没有自己特有的编译器(尽管Mac上的Gcc是经 苹果修改过的版本),创建项目的时候,Xcode还是会生成并执行一条条的Gcc和ld的命令  。所以如果你有足够的UNIX经验(并且知道到哪里找需要用 的Framework),完全可以在命令行编译一个完整的Cocoa应用程序  。

  其实Xcode提供了很多功能,使你无论在创建项目、设计、修改代码还是编译等各个环节都能收益,恐怕你很 难找到一个不使用它的理由  。事实上,自从Mac OS 10.4引入了Universal Binary的概念以后,Xcode几乎成为了大多数Mac开发者的唯一选择  。不用担心的是Xcode是免费的,只要你有一台Mac,随机带的安装盘里就 有Xcode,升级是免费的(不过如果你用的是Mac OS 10.5以前版本的OS,你将不能运行Xcode 3.0或以上的版本)  。

  什么是Interface Builder?

  Interface Builder(IB)是Mac OS X平台下用于设计和测试用户界面(GUI)的应用程序  。为了生成GUI,IB并不是必需的,实际上Mac OS X下所有的用户界面元素都可以使用代码直接生成;但IB能够使开发者简单快捷的开发出符合Mac OS X human-interface guidelines的GUI  。通常你只需要通过简单的拖拽(drag-n-drop)操作来构建GUI就可以了  。

  IB使用Nib文件储存GUI资源,同时适用于Cocoa和Carbon程序  。在需要的时候,Nib文件可以被快速地载入内存  。

  ByeWindows程序

  学习和认识Xcode的最好办法就是学做一个简单的例子,不然,你永远只知道Xcode而不知道怎样去用它  。这样的例子网上很多(外部连接里我也放了两个),英文没问题的读者可以直接去看那些例子  。

  让我们来看看如何使用Xcode编写一个简单的Cocoa程序(为保证实时性,以下的例子均将采用 Xcode 3.0  。使用Cocoa程序作为例子的原因是我希望用一个连贯的例子介绍Xcode和Interface Builder;同时Cocoa程序才能代表Mac OS X编程的特点)  。

  首先我们需要安装Xcode  。放入Leopard安装DVD,再弹出窗口后,选择 “OptionalInstalls->Xcode Tools->XcodeTools.mpkg”,然后根据安装向导完成安装  。安装完成后,Xcode.app可以在“\Developer\ Applications\”下找到  。双击图标,Xcode就应该运行起来了  。

  接下来我们需要创建一个新项目,点击Xcode的菜单:“File->New Project...”或者使用快捷键Shift+Cmd+N  。这时会弹出一个Assistant窗口,你需要在这里选择你要建立哪一种Project  。 选择“Application->Cocoa Application”,然后点“Next”  。接着你需要给项目取名字,并指定路径  。这里我们把项目叫做ByeWindows  。之后点“OK”,你就会 看到Xcode的主窗口了  。

  苹果开发工具Xcode 和Interface Builder

  图1.1 选择Project类型

  我们先看左边“Groups & Files”一栏,注意到代表整个Project的ByeWindows蓝色图标已被选中,此时显示的是整个Project所有的文件,包括源文件和需要 生成的Binary文件  。注意到ByeWindows.app可执行文件是以红色显示,意味着这个文件现在还没有生成,但Project对它有一个 Reference  。

  如果改变左边选中的Group,右边的文件列表也会相应的更新  。现在我们在Classes group里新建两个文件:右击选中Classes,Add->New File... 选择Objective-C Class,命名文件名为“AppController”,点OK  。这时两个新文件会被添加到Class group里  。默认情况下.h文件会在一个新窗口中被打开,你可以使用快捷键??↑切换到.m文件  。你也可以在Groups & Files一栏双击文件,使其在一个新窗口中打开  。在新窗口中编辑代码有时很方便,不过“All-in-One” window的模式或许更受偏爱  。

  不用急如果你喜欢“All-in-One”,只要先在左边单击选中main.m文件,然后点击Toolbar上的 Editor按钮(如果你看不到这个按钮,你需要先通过点击菜单项“View->Customize Toolbar...”来添加该按钮),这样右边的窗口就变成了Editor  。以后你若选择左边的选项,右边Editor的内容会相应更新  。注意 Xcode不象VS那样支持Tab,而是在Editor的上方一栏,你可以通过点击左边那一对小三角来选择近来在Editor里打开过的文件;而点击右边 那一对小三角,可以让你选择当前编辑的文件里的Symbols(比如函数名等)  。

  苹果开发工具Xcode 和Interface Builder

  图1.2 Editor

  接下来我们要写点代码:

  1. AppController.h:   
  2. @interface AppController : NSObject {  
  3.     IBOutlet NSButton *button;  
  4. }  
  5. - (IBAction)saySomething:(id)sender;  
  6. @end  
  7. AppController.m:   
  8. #import "AppController.h"  
  9. @implementation AppController  
  10. - (void)awakeFromNib {  
  11.     NSLog(@"Wake up!");  
  12. }  
  13. - (IBAction)saySomething:(id)sender {  
  14.     NSLog(@"Hello Mac, Goodbye PC.");  
  15. }  
  16. @end 

  这里我们定义了一个class,但还没有生成其Instance  。这时双击 Resources->MainMenu.nib,Interface Builder会自动启动  。从Library里drag一个NSObject(蓝色的正方体)到Title是MainMenu.nib的Window里  。 接着在Inspector里选择Identity tap (?6),更改其Class为AppController(我们刚刚定义的class)  。

  接着,再从Library里Drag一个Button(任何一种Button都可以)到Title (Window的窗口)  。接下来按住Control的同时,Drag button到AppController,并连接其Action到SaySomething:  。接下来Save并返回Xcode  。

  苹果开发工具Xcode 和Interface Builder

  图1.3 拖拽Object

  苹果开发工具Xcode 和Interface Builder

  图1.4 指定Object的Class

  苹果开发工具Xcode 和Interface Builder

  图1.5 按住Control,从按钮拖拽到App Controller

  接下来我们要编译project  。点击toolbar上的“Build”图标,或者使用快捷键?B  。编译应 该成功,这时注意主窗口的左右下脚各会显示“Build succeeded”和“Succeeded”  。点击后者,你能看到“Build Result”窗口,如果有任何Error或Warning,也会在这里显示出来  。接着运行程序,点击Go图标或者使用快捷键?R  。这时你会看到你刚才在 Interface Builder里建好的带有一个Button的窗口  。点击Rditor窗口上方那个小的标有Gdb的图标,你可以看到Wake Up!的Log消息  。点击窗口中的Button,你可以看到“Hello Mac, Goodbye PC.”的Log消息  。

  这里稍微解释一下这个程序工作的原理:首先AppController是通过Nib文件来实例化的, AwakeFromNib Method会在程序运行起来后自动被调用,所以才有了第一条Log消息  。此外我们在IB里建立了Button到saySomething:的联系,而每 当Button被按下时,其都会向其Target (这里是AppController)发送一个消息(这里是saySomething:),所以每当我们按一下Button,都会有新的一条Log消息  。

  接下来我们要试一下如何调试  。首先我们得设一个Breakpoint  。这在Xcode里面最简单不过了,注 意在Editor窗口的左边,有一栏显示着行号,在数字5的那里点一下...噢,一个Breakpoint就这样诞生了  。要改变Breakpoint的位 置,我们只需要用鼠标上下拖动它;怎样去掉它呢?轻轻用鼠标的把它拖出来,放开鼠标,就好了  。

  如果你在蓝色的Breakpoint上点一下,它会变成灰 色,意味着它被Disable了  。好,现在保证第5行有一个蓝色的Breakpoint,然后我们点击菜单项“Run->Debug”,这时程序会 在我们设的Breakpoint处停住  。这时把鼠标放在不同的变量上,可以看到变量的值  。同时注意,Editor的上方多出了一排用于调试的工具  。点击最 右边有“Gdb”字样的图标,我们可以再次看到Console窗口  。把Console窗口保留在一边,这时点击左起第三个按钮(Step Over),Console里面会再次显示出“Hello World”;这时点击左起第二个按钮(continue),由于我们没有其他的Breakpoint了,程序应该会正常终止  。

  更多关于Xcode和Interface Builder

  在Xcode里你可以开发几乎所有可以在Mac OS X上运行的(从命令行的C程序到J2EE程序)程序  。Xcode也提供了许多相应template,大大节省了配置project的时间  。

  Xcode也支持对多种文件的编辑,其中包括Core Data data model文件的编辑器,使你能够像画Entity Relation Diagram一样的编辑Data Model  。同时Xcode也整合了对Version Control软件的支持(支持CVS, SVN, Perforce)  。

  另外值得一提的是Xcode的Refactor功能,它可以让你方便的更改变量的名称,甚至更改一个类的基类,而不用你自己手动的去搜索和替换  。

  Interface Builder方面,值得一提的是对Cocoa Binding的支持  。这里简单提一下什么是Binding  。通常,如果GUI需要呈现某些数据,你总需要写不少所谓“胶水”代码  。而Mac OS 10.3引入了binding的概念,使得这些Cocoa程序里这些胶水代码的数量可以大副减少:你只需要Bind GUI部分的某些Properties到Data Model上即可  。在IB 3.0的Inspector的第四个Tab里(快捷键?4),你可以找到当前选中的GUI元素的可以用于Binding的Properties  。

  小结:苹果开发工具Xcode Interface Builder详解的内容介绍完了,希望本文对你有所帮助!