iOS开发-Interface Builder的前世今生

简介:

Interface Builder,是用于苹果公司Mac OS X操作系统的软件开发程序,Xcode套件的一部分,于1988年创立。它的创造者Jean-Marie Hullot自称是“一个热爱旅行、充满激情的摄影师”,本篇分享Hullot热爱技术的那一面——创造Interface Builder的过程。

因势而动

1981年, Jean-Marie Hullot拿到巴黎第十一大学的计算机科学博士资格后,开始了法国国家信息与自动化研究所(INRIA)的研究生活。

Jean-Marie Hullot的名字似乎不为大众所熟知,但他设计的Interface Builder 却深入人心,创造了一个个软件神话。

Jean-Marie Hullot的名字似乎不为大众所熟知,但他设计的Interface Builder 却深入人心,创造了一个个软件神话。

20世纪70年代初,正是面向对象程序设计开始走上历史舞台的时期。许多现代计算机技术的诞生地Xerox PARC(施乐帕洛阿尔托研究中心)的Alan Kay、Dan Ingalls、Ted Kaehler 、Adele Goldberg等人,从1969年开始研发一款面向对象的程序语言Smalltalk,并于1980年正式公布。这是一个完整地实现面向对象范型的编程套件,包含了一种面向对象的程序设计语言、一种程序设计库和一个应用开发环境(ADE)。

虽然当时的机器跑得巨慢无比,但Smalltalk先进的思想对其他众多的程序设计语言(Objective-C、Actor、Java和 Ruby)的产生起到了极大的推动作用,对计算机工业界的发展产生了非常深远的影响。我们将会在今后介绍Objective-C时,详细介绍Smalltalk及其对Objective-C的影响,这里先一笔带过。

Smalltalk的发布在业界一石激起千层浪,也给Jean-Marie Hullot幼小的心灵带来了巨大的震撼。他立即明白了面向对象思想所代表的先进生产力,一定会改变今后数十年的程序设计流程,他毫不犹豫地成为面向对象编程模式的早期粉丝。

SOS的助力

那时,Jean-Marie Hullot使用早期的Macintosh计算机进行开发。不过他很快就和其他开发者一样,发现虽然Mac的用户界面做得不错,但开发程序实在是太糟糕了。他说:“当Macintosh被发明出来时,计算机和先前就大不一样了,你至少需要花60%~70%的时间在用户界面部分的代码上。”在Macintosh被发明之前,用户界面是相当简单的,只需要在命令行下面打一串字符,计算机就会回应出一行行的信息。所以在那个时代,开发者完全不需要专注于用户界面。而Mac一经发布,随之而来的众多的窗口和菜单,让整个世界都不一样了。虽然对于使用最终产品的用户而言是简单方便的,但对于码工来说简直是个噩梦。每次他们需要一个窗口或者菜单,都要从零开始构建。

聪明的Hullot开始动脑筋改进Mac编写用户程序难的现状。他开发了一个程序,有点像现在Windows系统中的“画板”。一侧的工具条,是类似菜单这样的大量可重用的对象;而另一侧,则是程序员想构建的用户程序界面。只要把工具条上的工具拖放到程序界面中,那么类似“打开”、“打印”等相关的功能,就可以被添加到用户界面中。事实上,这个程序,是最早的一批能通过鼠标把控件拖入界面设计窗口实现相应功能的商业程序,是用户界面设计软件的先驱。

这个跨时代的发明被称作SOS,用Lisp语言编写【注:What are we going to called this thing中认为此时就是Interface Builder,但据The NeXTonian等多处资料表明,在Steve Jobs见到以前,该程序名为SOS】。当时,ExperTelligence开发了一种叫做ExperLisp的方言,SOS即用此语言写成【注:http://en.wikipedia.org/wiki/Interface_Builder】。

此时Hullot忽然意识到,他设计的东西事实上很强大,其重要性简直可以和Smalltalk这样的发明相比——Smalltalk让开发者尝到了面向对象语言的甜头,而SOS则是直接把对象放到了开发者手边。有了这么拽的东西,Hullot意识到如果他只在研究所窝着,那只能让十几个人享受这一成果,而如果他跳槽,把这个工具公开,那对天下的码工来说可是大福音。

诞生之源

经过不断努力,Hullot找到了一个值得推销自己发明的好地方——剑桥的苹果大学联盟(Apple University Consortium)。这个苹果和大学合作的组织看到Hullot的创作后反响很好,就推荐他去见Jean-Louis Gassee。 Jean-Louis Gassee是个法国人,时任苹果开发研究院主任,见到SOS后也认为这是个好东西,便说服他去美国闯一闯。经过几次的鼓励和推荐,加上美国对Hullot来说又不陌生,于是他就买了机票跳上飞机就奔赴美国。

不过当Jean-Marie Hullot来到美国加州苹果总部时,他却认为这不是一个工作的好地方——苹果已经是一个很庞大的企业,很难再有所创新发展。他最终决定不留在那儿,转而在美国寻找一个能把这个产品卖出去的人。四处推销之后,找到他用来写SOS的Lisp解释器的生产商,就是刚才提到的位于Santa Barbara的软件公司 ExperTelligence。

事实上,当时的ExperTelligence正在寻找合作商卖自已的Lisp,而Hullot也在找合作商卖自已的 SOS,两者一拍即合,随即打电话给 NeXT,共同推销自家的产品。

NeXT在Palo Alto总部的产品市场部人员接待了Jean-Marie Hullot和两位来自ExperTelligence的员工,被SOS的理念镇住,遂打电话请Steve Jobs下来看。Jean-Marie Hullot像复读机一样又把自己的大作秀了一遍。老谋深算的Steve Jobs事实上早就看中了SOS,但他对ExperTelligence的Lisp一点兴趣都没有。所以他装作对这场演示毫无兴致【注:这有很多引用该文的翻译译错,原文说nonplussed,字面意思为惊异,但在美国非正式表述中,此字表毫无兴致】,挥挥手就把这三个人打发走了。

但当他们一行人走到停车场时,Steve Jobs让他手下把Hullot追了回来,当他只身回到NeXT总部时,发现Steve Jobs正恭敬地等着他。

“我想要你计算机上那个程序”【注:http://rixstep.com/2/0/people/】,Steve Jobs说道:“你大概什么时候能开始给我们工作?”

Hullot回答说自己翌日就要离开去度假。

“好吧,我两周后给你打电话,”Steve Jobs说。

“不行,老乔”,Hullot表示:“我不游美国,我可要环游欧洲,你七个礼拜后再打给我吧。”

Steve Jobs虽然一骨子傲气,但他明白一个简单的道理:21世纪最缺的是什么——是人才!即使Jean-Marie Hullot玩起了大牌,这电话自然还是要打的。Hullot刚一度完假回来,Steve Jobs的电话就如期而至。

如此三顾茅庐般的热情,把Jean-Marie Hullot感动得第二天就登上了去美国的飞机。合约签了半年,但实际上他最终在NeXT整整待了十年。在NeXT工作期间,他使用Objective-C和NeXTSTEP框架重写了SOS,命名为Interface Builder。由此,Interface Builder成为NeXT集成开发环境 Project Builder标准套件之一。

进阶与探索

Interface Builder和SOS一样,提供了一个工具箱,包含一系列用户控件对象。工具箱并不是官方定死的,而是可以任意扩展的,比如如果用户想使用类似Safari中的toolbar,而这不是官方提供的,则下载第三方的PSMTabBar即可实现,甚至连Cappuccino这样的网页框架也可以用Interface Builder来完成设计。开发者只要把控件比如菜单和文本框拖入项目文件就能完成用户界面设计,节省了几乎所有和控件放置有关的代码。

开发者拖拽鼠标,将控件可提供的动作(IBAction)和另一个对象的接口(IBOutlet)连在一起, 则建立了一个绑定。这样,一旦动作被激发(比如用户点了按钮),那接口中相应的方法则会被执行。所以,大量对象关联的代码也能被省去。

有了这样的模式后,Interface Builder和Cocoa可以比后来出现的Microsoft Visual Studio或Qt Designer等软件走得更远——只要是对象,Interface Builder就能够操控它们,不需要一定是一个界面的控件。比如,数据库的数据源、队列等,都可以在Interface Builder中连接起来,于是很多原本需要上千行的复杂应用(比如用来显示、修改企业中职工姓名、部门、电话、地址、头像等信息SQL数据库的用户界面程序),数分钟内就可以写完,不用一行代码。不信?让1992年的Steve Jobs亲自做给你看【注:http://www.youtube.com/watch?v=j02b8Fuz73A, 第23分钟~第29分钟】。

NeXT被Apple收购后,苹果把下一代操作系统建立在NeXTSTEP的基础上。Objective-C和Cocoa被作为主要框架,而Interface Builder和Project Builder也因此受到重用。就官方的工具箱而言,支持Objective-C/Cocoa、Carbon的HIToolbox和WebObject。

2008年3月27日,苹果发布首个iPhone SDK,设计Cocoa Touch界面的,也正是Interface Builder。可以说,Interface Builder一直随着公司产品的发展而不断拓新。

Jean-Marie Hullot是在NeXT被收购时进入苹果的。Steve Jobs令他率领在法国的一个小团队,秘密为Mac OS X 10.2开发一个办公软件。以往这样量级的程序,都是由苹果加州总部的大班人马完成。而这次,为了向世人表明他的Interface Builder有多强大,iCal横空出世,展示复杂的界面元素(日历、可拖拽的任务、五花八门的分类)和诸多功能(网络同步、Apple Script脚本控制)可以用相当快速的时间内开发出来【注:http://www.appleinsider.com/articles/07/10/17/road_to_mac_os_x_leopard_ical_3_0.html&page=2】。

最后,在iCal小组打完酱油的Jean-Marie Hullot荣升苹果软件开发部首席技术官。

Project Builder在Mac OS X 10.3时被重命名为现在大家所熟知的 Xcode。Xcode 3以前,Interface Builder使用一种名为nib格式的二进制文件格式。不过由于nib不能用肉眼读,也不方便使用版本管理工具来管理,所以Xcode 3开始新加入一种名为xib的文本文件格式,最后再在项目编译阶段输出为nib格式。和产生静态界面布局代码的工具(如MSVC、QtDesigner、 Delphi等类似的软件)很不同,nib是不被转译成相应Objective-C代码的。用户程序执行时,nib文件被读入,解包,并且唤醒【注:awake,即载入 nib 会自动调用程序中awakeFromNib方法】,所以nib文件是在运行时动态加载的。

长期以来,Xcode环境和Interface Builder是两个独立但相互工作的程序。而2010年释出的Xcode 4预览版中,Xcode和Interface Builder合二为一,成为一个一体化的编程环境。所以现在,开发者甚至可以只用鼠标在用户界面和代码间来回拖拽就能完成,这样一来Interface Builder对用户代码的解释也比先前更正确。比早期分离的程序使用起来确实方便很多。

当然,一个负面的影响是,这样用一体化集成开发环境写程序,往往会发现屏幕空间是不够的,所以像我这样用11寸Air或者13寸Macbook Pro的人,出去打招呼都不好意思说自己是做Mac开发的。

下一个海阔天空(彩蛋)

在而后的岁月里,Interface Builder创造了一个又一个应用软件神话,小到官方教程中的汇率计算器,大到苹果所有的家用、专业软件,都由Interface Builder完成。

在风起云涌的1989年,欧洲核子研究组织(CERN)工作的科学家Emilio Pagiola忽悠经费,买来研究所的第一台NeXT计算机——当时NeXT计算机在CERN可是个新鲜事物——那里的科学家们纷纷前来把玩,普通青年发现里面有全本的韦氏词典,并可自动检查用户输入的拼写错误,技术青年发现它跑的是Unix系统,还有一个可读写的光驱,文艺青年更是发现里面居然预装了莎翁全集。不过毕竟像Emilio Pagiola这样忽悠巨款买NeXT机器的青年不多,所以大家围观完了,也就回去该干嘛干嘛了。

但Tim Berners-Lee和别人不一样,他不仅围观了那台计算机,还看到了Jean-Marie Hullot设计的 Interface Builder,研究了Objective-C,发现了面向对象编程范式开发环境的最高成就。这情景让他心中漾起了巨大的波澜,最终化为激情澎湃的投入,汇成了一行行面向对象的代码,一泻千里,奔向未来。

一年后,世界首个 HTTP 服务在CERN的NeXT计算机运行起来,而使用Objective-C和Interface Builder 所编写的超文本语言编辑器兼浏览器同步发行。他给这个主从式架构起了个好听的名字——World Wide Web(万维网)。

本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4227251.html,如需转载请自行联系原作者

相关文章
|
21天前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
8天前
|
开发框架 Android开发 iOS开发
安卓与iOS开发中的跨平台策略:一次编码,多平台部署
在移动应用开发的广阔天地中,安卓和iOS两大阵营各占一方。随着技术的发展,跨平台开发框架应运而生,它们承诺着“一次编码,到处运行”的便捷。本文将深入探讨跨平台开发的现状、挑战以及未来趋势,同时通过代码示例揭示跨平台工具的实际运用。
|
12天前
|
Java 调度 Android开发
安卓与iOS开发中的线程管理差异解析
在移动应用开发的广阔天地中,安卓和iOS两大平台各自拥有独特的魅力。如同东西方文化的差异,它们在处理多线程任务时也展现出不同的哲学。本文将带你穿梭于这两个平台之间,比较它们在线程管理上的核心理念、实现方式及性能考量,助你成为跨平台的编程高手。
|
14天前
|
存储 前端开发 Swift
探索iOS开发:从新手到专家的旅程
本文将带您领略iOS开发的奇妙之旅,从基础概念的理解到高级技巧的掌握,逐步深入iOS的世界。文章不仅分享技术知识,还鼓励读者在编程之路上保持好奇心和创新精神,实现个人成长与技术突破。
|
17天前
|
安全 IDE Swift
探索iOS开发之旅:从初学者到专家
在这篇文章中,我们将一起踏上iOS开发的旅程,从基础概念的理解到深入掌握核心技术。无论你是编程新手还是希望提升技能的开发者,这里都有你需要的指南和启示。我们将通过实际案例和代码示例,展示如何构建一个功能齐全的iOS应用。准备好了吗?让我们一起开始吧!
|
22天前
|
安全 Swift iOS开发
Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法
本文深入探讨了 Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法。Swift 以其简洁、高效和类型安全的特点,结合 UIKit 丰富的组件和功能,为开发者提供了强大的工具。文章从 Swift 的语法优势、类型安全、编程模型以及与 UIKit 的集成,到 UIKit 的主要组件和功能,再到构建界面的实践技巧和实际案例分析,全面介绍了如何利用这些技术创建高质量的用户界面。
25 2
|
24天前
|
vr&ar Android开发 iOS开发
安卓与iOS开发中的用户界面设计原则
【10月更文挑战第41天】探索移动应用开发的精髓,本文将深入分析安卓和iOS平台上用户界面设计的核心原则。通过比较两大操作系统的设计哲学,我们将揭示如何打造直观、易用且美观的应用程序界面。无论你是初学者还是资深开发者,这篇文章都将为你提供宝贵的见解和实用的技巧,帮助你在竞争激烈的应用市场中脱颖而出。
|
25天前
|
设计模式 Swift iOS开发
探索iOS开发:从基础到高级,打造你的第一款App
【10月更文挑战第40天】在这个数字时代,掌握移动应用开发已成为许多技术爱好者的梦想。本文将带你走进iOS开发的世界,从最基础的概念出发,逐步深入到高级功能实现,最终指导你完成自己的第一款App。无论你是编程新手还是有志于扩展技能的开发者,这篇文章都将为你提供一条清晰的学习路径。让我们一起开始这段旅程吧!
|
28天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异和挑战
【10月更文挑战第37天】在移动应用开发的广阔舞台上,安卓和iOS这两大操作系统扮演着主角。它们各自拥有独特的特性、优势以及面临的开发挑战。本文将深入探讨这两个平台在开发过程中的主要差异,从编程语言到用户界面设计,再到市场分布的不同影响,旨在为开发者提供一个全面的视角,帮助他们更好地理解并应对在不同平台上进行应用开发时可能遇到的难题和机遇。
|
26天前
|
iOS开发 开发者
探索iOS开发中的SwiftUI框架
【10月更文挑战第39天】在苹果的生态系统中,SwiftUI框架以其声明式语法和易用性成为开发者的新宠。本文将深入SwiftUI的核心概念,通过实际案例展示如何利用这一框架快速构建用户界面,并探讨其对iOS应用开发流程的影响。