《深入浅出iPhone/iPad开发(第2版)》——你已经创建了自己的第一个iPhone应用程序!

简介:

本节书摘来自异步社区《深入浅出iPhone/iPad开发(第2版)》一书中的你已经创建了自己的第一个iPhone应用程序!,作者 【美】Dan Pilone , Tracey Pilone,更多章节内容可以访问云栖社区“异步社区”公众号查看

你已经创建了自己的第一个iPhone应用程序!
深入浅出iPhone/iPad开发(第2版)
所有的部分都连接在一起。

描述界面。

iDecide由2个nib组成:MainWindow.xib和iDecideViewController.xib。合在一起,它们是用户看到的UI。

视图在视图控制器中被连接到代码。

我们的视图通过界面构建器被连接到实现代码,使用的是IBOutlets和IBActions。IBOutlets给予我们到UI组件的引用,而IBActions在事件发生时被调用。

在视图控制器中实现我们的应用程序的行为。

遵循MVC模式(或者实际上只是VC模式),我们拥有在视图控制器中实现的所有的行为,清晰地与视图本身分离开。如果需要更新,视图控制器使用IBOutlets返回我们的实际UI控件。

界面构建器创建nib文件(使用.xib扩展名),并用XML描述GUI。
nib文件通过CocoaaTouch框架加载,并在运行时变成CocoaaTouch类的具体实例。
为了将在一个nib中描述的组件连接到你的代码,你使用IBOutlets和IBActions。
Xcode是为应用程序维护你的代码和文件的地方。
Xcode是你的项目开发的中心,并为编辑你的代码,创建你的应用程序,并在运行它时进行调试提供支持。
iPhone模拟器让你可以不需要真正的设备,而只在Mac上测试你的应用程序。
这里没有愚蠢的问题
问:文件的所有者是什么意思?

答:界面构建器期望什么类都有个nib文件的所有者。你可以改变该类在界面构建器中认为的是什么,但是默认的是,一个由Xcode主要视图控制器创建的新建立的项目,便是通过Xcode创建主要视图的文件所有者。这就是为什么我们没有改变任何东西的原因。由于文件的所有者是我们的iDecideViewController建立的,界面构建器查看iDecideViewController的头文件,并理解为我们有一个名为descriptionText的IBOutlet和一个名为buttonPressed的IBAction。当你连接UILabel的引用接口到文件所有者descriptionText时,界面构建器保存必要的信息,以便当nib通过应用程序被加载时,在我们的iDecideViewController中引用会被正确设置。同样的事情也发生在TouchUpInside事件,除了在这种情况下,不是一个组件连接一个引用,而是一个组件的事件连接到一个应该被调用的方法。

注意(界面构建器的类期望会被加载到nib,但并不意味着其他的类不能尝试加载),如果那个类没有必要的属性和方法,它只是可能工作得不好。

问:为什么我们的新文本字符串前面会有一个@?

答:CocoaaTouch框架为它的文本字符串使用一个字符串类名为NSString。由于它是如此普遍,Objective-C内置支持从常量创建它们。如果你表示一个字符串常量,则应该在NSString之前放置一个@字符。否则,它只是一个类似C或C++中的普通char*。

问:我们已经介绍的内容有多少是专门针对iPhone的?为iPod Touch或iPad做开发会有很大不同吗?

答:不全是!开发iOS的一个好处是,大部分为一种iOS设备创建的东西可以直接应用到另一种iOS设备上。你需要关心的是相关设备的专用硬件能力(例如,尝试在一款较旧的iPod Touch或iPad上使用摄像机功能是不会工作的),以及你的视图与图像的屏幕分辨率是否需要改变,但除此之外,为不同设备做开发还有更多你需要注意的。

如果你在脑海中坚持MVC模式,并确保从视图中分离出了逻辑,这会使你为应用程序添加新视图变得更加容易。

问:Xcode实际上是怎么构建应用程序的?

答:我们打算在接下来的内容中来更多地讲一讲。简单表述为,Xcode可以集齐所有你的资源和代码,将它们连接在一起,然后最终糅合出一个不错的程序,放入你的iOS设备上。

问:为什么我一直听到界面构建器?它究竟是什么?

答:在以前,Xcode 4的视图在一个单独的应用程序中被编辑,叫做界面构建器。现在它是Xcode的一部分,实际上不再叫界面构建器。由于需要过渡,人们可能依旧在工作中或聊天中称之为IB(界面构建器)。

问:当视图被编译时,为什么还是.xib文件?难道不该改变点什么吗?

答:在编译后,.xib文件实际上是.nib文件的二进制形式。

问:我不断听到的“无正式文件的API”究竟是什么?

答:它们是苹果使用的私有方法,但是你不能用。多任务就是一个例子。它刚刚成为可供开发人员在iOS 4中使用的方法,但一些苹果的应用程序已经能够从一开始就在后台运行(例如,当你切换到其他应用程序的时候,iPod应用程序不会停止播放)。

你通常看到当开发人员试图自定义一个标准的iOS控件或者改变一个物理按键的作用时,会触碰到无正式文件的私有方法。不要这样做。苹果会在审核期间查出来,并拒绝让你的应用程序通过。苹果保护这些API是保护它们平台的一部分,并且现在的无正式文件也许会在未来允许使用。


d95cef0095eea5e48bc8611582b3510ae9a20608


09e2f9168fd68211f1a4292fad165fb1bc2846d7


8c1a0823305c9757b622b3d6c269c54ee7ee8101

你的任务是从游泳池中选择文件名称,并遵循图中的意思把它们放入相应的空白行中。一个文件名不能使用两次,且文件名称不必全部使用。你的目标是完成该图,使该图解表示出iDecide的设计过程。


071b592558b14105abc0c0a2d10b187e2c10bdf3

exercise_pool_chair.jpg游泳池解谜答案
你的任务是从游泳池中选择文件名称,并遵循图中的意思把它们放入相应的空白行中。你不能使用相同的文件名称,且文件名称不能全部使用。你的目标是完成该图,使该图解表示出iDecide的设计过程。


071b592558b14105abc0c0a2d10b187e2c10bdf3

开动脑筋,思考那些我们在这一章中使用的新术语对应的英文单词。


71922ece65835e30bde030ecfec49803d745374d

4.一些不能依靠模拟器测试的东西。

5.这是用来建立一个从实现代码到视图的输出连接。

7.该术语用来描述一个iPhone应用程序中的每一个屏幕。

8.用于编写iPhone应用程序的框架。

10.在应用程序中用于组织图形的文件夹。

12.对iPhone应用程序使用的IDE名称。

13.在Xcode中使用,以提供类的访问。

纵向的

1.用来编写iPhone应用程序的语言。

2.用来在台式机上测试应用程序。

3.用于接收代码中的事件,并触发一些事情。

6.这是一个编辑器的名字,用于Objective-C。

9.iPhone是这种类型的设备。

11.用于创建视图的文件的名字。

exercise_puzzle.jpgiOS填字游戏
开动脑筋,思考那些我们在这一章中使用的新术语对应的英文单词。


b5755c32baca842450cfe0e0508115e3d429e580

4.一些不能依靠模拟器测试的东西。(PERFORMANCE)

5.这是用来建立一个从执行代码到视图的输出连接。(IBOUTLET)

7.该术语用来描述一个iPhone应用程序中的每一个屏幕。(VIEW)

8.用于编写iPhone应用程序的框架。(COCOATOUCH)

10.在应用程序中用于组织图形的文件夹。(RESOURCES)

12.对iPhone应用程序使用的IDE名称。(INTERFACEBUILDER)

13.在Xcode中使用,以提供类的访问。(FRAMEWORKS)

纵向的

1.用来编写iPhone应用程序的语言。(OBJECTIVEC)

2.用来在台式机上测试应用程序。(SIMULATOR)

3.用于接收代码中的事件,并触发一些事情。(IBACTION)

6.这是一个编辑器的名字,用于Objective-C。(XCODE)

9.iPhone是这种类型的设备。(MOBILE)

11.用于创建视图的文件的名字。(NIB)

相关文章
|
6月前
|
iOS开发
如何查找 iPhone 中所有的应用程序
如何查找 iPhone 中所有的应用程序
|
1天前
|
编解码 iOS开发 UED
响应式设计在 iPhone 开发适配中的具体应用
【10月更文挑战第23天】响应式设计在 iPhone 开发适配中扮演着至关重要的角色,它能够帮助我们打造出适应不同屏幕尺寸和用户需求的高质量应用。通过合理运用响应式设计的原则和方法,我们可以在提供良好用户体验的同时,提高开发效率和应用的可维护性。
|
1天前
|
编解码 测试技术 iOS开发
iPhone 屏幕尺寸和开发适配
【10月更文挑战第23天】iPhone 的屏幕尺寸变化给开发者带来了一定的挑战,但也为创新提供了机遇。通过深入了解不同屏幕尺寸的特点,遵循适配原则和策略,运用合适的技巧和方法,我们能够为用户提供在不同 iPhone 机型上都具有良好体验的应用。在未来,随着技术的不断进步,我们还需要持续学习和适应,以满足用户对优质应用体验的不断追求。
|
3月前
|
数据采集 iOS开发 Python
Chatgpt教你开发iPhone风格计算器,Python代码实现
Chatgpt教你开发iPhone风格计算器,Python代码实现
|
6月前
|
移动开发 网络协议 Linux
We discovered one or more bugs in your app when reviewed on iPhone and iPad running iOS 14.1
We discovered one or more bugs in your app when reviewed on iPhone and iPad running iOS 14.1
60 0
|
6月前
|
关系型数据库 MySQL iOS开发
macOS Catalina(10.15)如何访问iPhone(Ipad)的应用文档文件
macOS Catalina(10.15)如何访问iPhone(Ipad)的应用文档文件
170 0
|
6月前
|
iOS开发
如何查找iPhone中所有的应用程序
如何查找iPhone中所有的应用程序
45 0
|
网络协议 Ubuntu 网络安全
【服务器】iPad远程服务器进行开发(下)
【服务器】iPad远程服务器进行开发(下)
426 0
|
移动开发 Ubuntu 网络协议
【服务器】iPad远程服务器进行开发(上)
【服务器】iPad远程服务器进行开发
282 0
|
Web App开发 网络虚拟化 iOS开发
如何获取苹果设备的UDID(iPhone/iPad UDID查询方法)
如何获取苹果设备的UDID(iPhone/iPad UDID查询方法)