摘要:在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. 一道JAVA经典面试题目的两种解法

    题目要求:String s="-1 2 5 78 129 -65 -23";将字符串进行升序排序后输出. 方法一:使用数组进行排序 思路: 1.获取字符串中的数值:   2.将数组 ...

  2. 【windows核心编程】DLL相关(3)

    DLL重定向 因为DLL的搜索路径有先后次序,假设有这样的场景:App1.exe使用MyDll1.0.dll, App2.exe使用MyDll2.0.dll, MyDll1.0 和 MyDll2.0是 ...

  3. 警惕javascript代码中的“</script>”!

    之前在写<博客园自定义博客侧边栏公告的过滤漏洞>的时候遇到了一个javascript代码报错“语法错误”的问题,一直不得以解决,感谢Arliang发现了并为我进行了耐心的解释,现整理如下: ...

  4. WeChat Official Account Admin Platform API Introduction

    Keyword: WeChat API Introduction Message and GeneralAuthor: PondBay Studio[WeChat Developer EXPERT] ...

  5. js变量申明提前及缺省参数

    现在最先的行为准则:js变量申明必须带var:然后开始随笔: 函数中的变量申明在编译的时候都会提到函数开头. 例如: function foo(){ console.log('some code he ...

  6. Spring入门(7)-自动检测Bean

    Spring入门(7)-自动检测Bean 本文介绍如何自动检测Bean. 0. 目录 使用component-scan自动扫描 为自动检测标注Bean 1. 使用component-scan自动扫描 ...

  7. 精通Linux的“kill”命令

    无论你使用哪种操作系统,你一定会遇到某个行为失常的应用,它把自己锁死并拒绝关闭.在Linux(还有Mac),你可以用一个"kill"命令强制终结它.在这个教程中,我们将展示给你多种 ...

  8. VPN Gate Client v4.11-免費、無限流量VPN翻牆(跳板)軟體(使用教學)

    VPN Gate Client安裝教學 ▼把下載的檔案壓縮後,開啟安裝檔案. ▼接下來就是一般安裝步驟,下一步>下一步   ▼同意>下一步>下一步   ▼安裝目錄可以用預設的也可以自 ...

  9. Nginx 禁止IP访问

    我们在使用的时候会遇到很多的恶意IP攻击,这个时候就要用到Nginx 禁止IP访问了.下面我们就先看看Nginx的默认虚拟主机在用户通过IP访问,或者通过未设置的域名访问(比如有人把他自己的域名指向了 ...

  10. DllImport属性详解

    API函数是构筑Windows的基石, 是Windows编程的必备利器.每一种Windows应用程序开发工具都提供间接或者直接的方式调用Win32API,C#也不例外.使用Win32API的一个好处就 ...