摘要:在Mac OS X上开发,首选Xcode继承开发环境。本文对开发工具套件中最重要的Xcode和Interface Builder两个工具做了简要介绍,并提供《苹果开发工具概述》PDF文档下载。

在Mac OS X上开发,首选Xcode继承开发环境。本文对开发工具套件中最重要的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的主窗口了。

图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文件会在一个新窗口中被打开,你可以使用快捷键Command↑切换到.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(比如函数名等)。

图1.2 Editor

 

接下来我们要写点代码: 

AppController.h:
@interface AppController : NSObject {
IBOutlet NSButton *button;
} (IBAction)saySomething:(id)sender; @end
AppController.m:
#import "AppController.h" @implementation AppController (void)awakeFromNib {
NSLog(@"Wake up!");
} (IBAction)saySomething:(id)sender {
NSLog(@"Hello Mac, Goodbye PC.");
} @end
这里我们定义了一个class,但还没有生成其Instance。这时双击Resources->MainMenu.nib,Interface Builder会自动启动。从Library里drag一个NSObject(蓝色的正方体)到Title是MainMenu.nib的Window里。接着在Inspector里选择Identity tap (Command6),更改其Class为AppController(我们刚刚定义的class)。 接着,再从Library里Drag一个Button(任何一种Button都可以)到Title(Window的窗口)。接下来按住Control的同时,Drag button到AppController,并连接其Action到SaySomething:。接下来Save并返回Xcode。

图1.3 拖拽Object

图1.4 指定Object的Class

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

接下来我们要编译project。点击toolbar上的“Build”图标,或者使用快捷键CommandB。编译应该成功,这时注意主窗口的左右下脚各会显示“Build succeeded”和“Succeeded”。点击后者,你能看到“Build Result”窗口,如果有任何Error或Warning,也会在这里显示出来。接着运行程序,点击Go图标或者使用快捷键CommandR。这时你会看到你刚才在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里(快捷键Command4),你可以找到当前选中的GUI元素的可以用于Binding的Properties。 

下载推荐:《苹果开发工具概述》 PDF全文	

苹果开发工具:Xcode和Interface Builder的更多相关文章

  1. iOS开发工具Xcode:Interface Builder

    简介: Interface Builder(IB)是Mac OS X平台下用于设计和测试用户界面(GUI)的应用程序(非开源).为了生成GUI,IB并不是必需的,实际上Mac OS X下所有的用户界面 ...

  2. iOS 8 Auto Layout界面自动布局系列2-使用Xcode的Interface Builder添加布局约束

    http://blog.csdn.net/pucker/article/details/41843511 上一篇文章<iOS 8界面自动布局系列-1>简要介绍了iOS界面布局方式的前世今生 ...

  3. 【转 iOS 8 Auto Layout界面自动布局系列2-使用Xcode的Interface Builder添加布局约束

    原文网址:http://blog.csdn.net/pucker/article/details/41843511 上一篇文章<iOS 8界面自动布局系列-1>简要介绍了iOS界面布局方式 ...

  4. 转:Cocoa、Foundation、UIKit、Objective-c、XCode、Interface Builder的概念

    Cocoa 是在Mac OS X系统上原生的一个编译环境.他包含两个框架,其实就是一系列的类库,Foundation和AppKit. 在你的iPhone等掌上设备上,使用的则是他的一个子类 - Coc ...

  5. Cocoa、Foundation、UIKit、Objective-c、XCode、Interface Builder的概念

    转自:http://blog.csdn.net/hou_cocoa/article/details/6187418 Cocoa 是在Mac OS X系统上原生的一个编译环境.他包含两个框架,其实就是一 ...

  6. iOS:使用Github托管自己本地的项目代码方式一:(Xcode方式:开发工具Xcode配置Git,由Xcode-->Source Control-->Commit)

    管理代码的地方主要有:Github(国外流行).CocoaChina.Cocoa4App.中国开源社区.CSDN.博客园.简书等等..... 现在主要介绍如何使用Github托管自己的项目代码. 尊重 ...

  7. iOS/macOS推荐个高效苹果开发工具, JSON 转模型代码工具,不再为复杂JSON数据写模型而烦恼,支持Swift/Objective-C,极速转换

    CCJSON 是一款运行在macOS上 JSON 转模型代码工具,不再为复杂JSON数据写模型而烦恼,可识别嵌套模型,字典/数组,支持Swift/Objective-C,操作方便,极速转换.下载 效果 ...

  8. iOS开发-Interface Builder的前世今生

    Interface Builder,是用于苹果公司Mac OS X操作系统的软件开发程序,Xcode套件的一部分,于1988年创立.它的创造者Jean-Marie Hullot自称是“一个热爱旅行.充 ...

  9. "回复 集赞" 抢 《Apple Watch 苹果开发教程》活动开始了!!!

    "回复 集赞" 抢 <Apple Watch 苹果开发教程>活动开始了!!!   活动方式: 回复积赞 第1步:回复该帖   扫描二维码进入活动现场 第2步:召集你的小 ...

随机推荐

  1. <转>Python运行的17个时新手常见错误小结

    1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加 :(导致 “SyntaxError :invalid syntax”) 该错误将发生在 ...

  2. Oracle11g导入*.dmp数据文件

    imp命令导入数据:imp username/password@SID file=XXX.dmp fromuser=XXX touser=XXX tables=(XXX,XXX)  [ignore=y ...

  3. windows下安装和配置Weka

    Weka是一款免费的,非商业化的,基于java环境下的开源的机器学习以及数据挖掘软件.Weka里含有各种数据挖掘工具:数据预处理,分类与回归,聚类,关联规则和可视化工具. 一.安装weka 我们首先需 ...

  4. 详解HTTP中的摘要认证机制(转)

    Basic认证方式是存在很多缺陷的,具体表现如下: 1,  Basic认证会通过网络发送用户名和密码,并且是以base64的方式对用户名和密码进行简单的编码后发送的,而base64编码本身非常容易被解 ...

  5. 改变seekbar的游标图片大小

    url: http://stackoverflow.com/questions/9699951/changing-size-of-seekbar-thumb The most flexible way ...

  6. av_interleaved_write_frame 网络不好的情况下返回较慢

    用libvlc做直播推流引擎在网络较差的情况下,需要关闭直播,并且重新开播.这个过程中,推流引擎重启,需要的是快速响应.实际上测试结果发现,经常会发生引擎关闭接口卡住.后来跟踪代码,定位到s_rtmp ...

  7. Codeforces 599C Day at the Beach(想法题,排序)

    C. Day at the Beach One day Squidward, Spongebob and Patrick decided to go to the beach. Unfortunate ...

  8. Linux 命令之last命令详解

    last:命令解释show listing of last logged in users 指令所在路径:/usr/bin/last 命令输出字段介绍: 第一列:用户名 第二列:终端位置.pts/0 ...

  9. JSF 2 multiple select dropdown box example

    In JSF, <h:selectManyMenu /> tag is used to render a multiple select dropdown box – HTML selec ...

  10. VIM技巧(1)

    VIM技巧(1) 替换 36s/^\(.* = \)entity.\(.*\)$/\1this.GetShowName("\2",\2); 删除空行 %g/^$/d %g/^\s* ...