博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《深入浅出iPhone/iPad开发(第2版)》——你已经创建了自己的第一个iPhone应用程序!...
阅读量:5924 次
发布时间:2019-06-19

本文共 3248 字,大约阅读时间需要 10 分钟。

本节书摘来自异步社区《深入浅出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)

转载地址:http://ulovx.baihongyu.com/

你可能感兴趣的文章
ubuntu14.04 鼠标闪烁问题
查看>>
jQuery Lightbox(balupton版)图片展示插件demo
查看>>
Elasticsearch集群的简单搭建
查看>>
SCRT-SSH传输文件
查看>>
Python非常cool的svg格式chart生成库pygal
查看>>
Telnet部署与启动 windows&&linux
查看>>
行列式的乘法定理
查看>>
有1000瓶水,3个瓶子可以再换1瓶,一共可以喝多少瓶?
查看>>
Search in Rotated Sorted Array ||
查看>>
NUC_HomeWork1 -- POJ2067(最短路)
查看>>
卸载mysql
查看>>
二叉树的遍历
查看>>
The Distinguish of the share or static lib in MFC
查看>>
如何导出数据库的数据词典
查看>>
linux下内存释放问题
查看>>
让Java和JavaScript进行交互
查看>>
android 上传文件
查看>>
linux逻辑卷管理
查看>>
java结合testng,利用mysql数据库做数据源的数据驱动实例
查看>>
LINQ之路12:LINQ Operators之数据转换(Projecting)
查看>>