开发本机iOS应用程序时,对iOS SDK的良好理解至关重要。 它不仅可以帮助您选择正确的工具来解决特定的问题,还可以确保您不会迷失在SDK包含的数十种框架中。 在本文中,我们放大了iOS体系结构,并找出了在幕后推动iOS应用程序发展的因素。
什么是iOS SDK?
我非常确定,即使是几位经验丰富的iOS开发人员,也很难用一句话来定义iOS SDK。 首字母缩写SDK代表软件开发套件 。 iOS SDK包含用于开发本机iOS应用程序的工具和资源,这意味着该SDK使开发人员能够在模拟器以及物理设备上开发,安装,运行和测试应用程序。
支持本机iOS应用程序的两个驱动力是Swift(或Objective-C)和本机iOS系统框架。 在之前的文章中,我们探讨了Swift编程语言。 在本文中,我想探讨支持本机iOS应用程序的框架。
这包括高级框架,例如UIKit和Map Kit框架,还包括与硬件紧密相关的框架,例如Accelerate和Core Location框架。
什么是本地iOS应用程序?
您现在知道什么是iOS SDK,但是什么使应用程序符合本机iOS应用程序的条件呢? 一个简单的答案是,iOS应用程序是在iOS设备上运行的应用程序。 不过,那只是事实的一半。 在Safari中运行的Web应用程序呢?
iOS应用程序是为iOS平台开发的Cocoa应用程序。 大。 什么是可可应用程序? 可可应用程序很难定义。 是应用程序编写所使用的语言吗? 并不是的。 它是构建Cocoa应用程序的工具吗? 不需要。无需Xcode即可开发Cocoa应用程序。
Apple将Cocoa应用程序定义为由最终从NSObject
继承的对象组成的应用程序, NSObject
是在Foundation框架中声明的根类,并且与Objective-C运行时紧密集成。
在本文中,我想重点介绍用于创建本机iOS应用程序的框架。 如果您想了解更多有关Swift也使用的Objective-C运行时的信息,建议您阅读Apple的《 Objective-C运行时参考》或阅读《 Objective-C运行时编程指南》 。
Foundation框架提供了第二个根类NSProxy
。 但是,您很少(如果有的话)在您的任何项目中使用它。
iOS架构
与Safari中运行的Web应用程序的另一个区别是,本机应用程序直接与iOS操作系统和iOS的本机系统框架进行交互。 操作系统充当应用程序与基础硬件之间的中介。 这种中介或抽象的主要优势在于,本机应用程序无需担心将来的硬件更改或设备规格。
操作系统向本地应用程序提供有关硬件功能(设备是否有摄像头?)和设备规格(应用程序是否在iPhone或iPad上运行)的必要信息。
iOS体系结构可以分为四个不同的层:
- 可可粉
- 媒体
- 核心服务
- 核心操作系统
这种分层的体系结构说明了这种抽象级别,其中更高层的层更抽象,而较低层的层更基础,并且与硬件紧密相关。 不用说,较高层的某些功能依赖于较低层。
Apple建议尽可能使用较高级别的框架,因为它们通常是较低级别框架的面向对象的抽象。 换句话说,较高级别的层通过较低级别的层与硬件间接交互,而较低级别的层本来就更复杂。 当然,如果较高级别的框架不能满足您的需求,那么仍然可以使用较低级别的框架。
提醒一下,框架是一个目录,其中包含动态共享库和与之相关的资源,例如头文件,图像等。框架是对各种系统接口(如iOS通讯录,设备的目录)的访问点。相机胶卷和音乐库。
可可触摸层
在上一篇文章中,我写了有关Cocoa Touch及其与Swift和Objective-C的关系的文章。 在本文中,我想从更实用的角度讨论Cocoa Touch。 应用程序如何依赖于Cocoa Touch层? Cocoa Touch在iOS架构中的作用是什么?
Cocoa Touch层是iOS体系结构的最顶层。 它包含本机iOS应用程序依赖的一些关键框架,其中最突出的是UIKit框架。
可可触摸层定义了基本的应用程序基础结构,并提供了许多重要技术,例如多任务处理和基于触摸的输入。
如前所述,iOS应用程序严重依赖UIKit框架。 如果未将本机iOS应用程序与UIKit和Foundation框架链接,则它们将无法运行。
UIKit框架(简称UIKit)是针对iOS平台量身定制的。 OS X平台有一个等效的框架,即Application Kit框架或AppKit 。 UIKit为事件驱动的图形化iOS应用程序提供了基础结构。 它还照顾到特定于iOS平台的其他核心方面,例如多任务处理,推送通知和可访问性。
Cocoa Touch层为开发人员提供了大量高级功能,例如自动版式,打印,手势识别器和文档支持。 除了UIKit,它还包含Map Kit,Event Kit和Message UI框架等。
有关Cocoa Touch层的所有框架的完整列表,请参考Apple的iOS技术概述指南。
媒体层
图形,音频和视频由媒体层处理。 该层包含许多关键技术,例如Core Graphics,OpenGL ES和OpenAL,AV Foundation和Core Media。
媒体层包含大量框架,包括用于访问设备上存储的照片和视频的资产库框架,用于通过滤镜进行图像处理的Core Image框架以及用于2D绘图的Core Graphics框架。
查看Apple的iOS技术概述指南,以获取媒体层所有框架的完整列表。
核心服务层
核心服务层负责管理本机iOS应用程序使用的基本系统服务。 Cocoa Touch层的某些功能取决于Core Services层。 核心服务层还提供了许多必不可少的功能,例如块对象,Grand Central Dispatch,应用内购买和iCloud存储。
最受欢迎的核心服务层之一是ARC或自动引用计数 。 ARC是编译器级别的功能,于2011年与iOS 5一起发布。ARC简化了Objective-C中的内存管理过程。
内存管理是本系列中未涉及的主题,但是在开发Cocoa应用程序时,了解内存管理的基础很重要。 自动引用计数是一个很好的补充,但是了解ARC为您所做的工作很重要。
您可以在使用Objective-C编程中阅读有关内存管理的更多信息,我强烈建议您这样做。
Foundation框架(简称Foundation)是iOS和OS X应用程序的另一个基本框架。 在下一篇文章中,我们将更详细地探讨该框架。 Foundation框架不仅仅是有用的类的集合,例如NSArray
, NSDictionary
和NSDate
。
Foundation提供了NSObject
根类,该类提供了通往Objective-C运行时的基本接口,并且还引入了一些范例,例如对象所有权的策略。 像Core Foundation(参见下文)一样,Foundation使不同的库和框架可以轻松共享数据和代码。
核心服务层的另一个重要框架与基础框架紧密相关,是基于C的核心基础框架,简称核心基础。 像Foundation框架一样,它使各种库和框架可以共享数据和代码。
Core Foundation具有称为免费桥接的功能 ,该功能可将Cocoa对象替换为功能参数中的Core Foundation对象,反之亦然。
有关Core Services层的所有框架的完整列表,请参考iOS技术概述指南。
核心操作系统层
这三个较高层提供的大多数功能都建立在Core OS层及其低层功能上。 Core OS层提供了一些框架,您的应用程序可以直接使用这些框架,例如Accelerate和Security框架。
出于明显的安全原因,Core OS层还封装了应用程序无法访问的内核环境和低级UNIX接口。 但是,通过基于C的libSystem库,可以直接访问许多底层功能,例如BSD套接字,POSIX线程和DNS服务。
文献资料
开发本机iOS应用程序时,最接近的盟友是与iOS SDK捆绑在一起的文档。 在大多数情况下,该文档非常出色,它可以帮助您轻松完成新技术或框架的开发。
即使可以在线获取文档,大多数开发人员仍使用Xcode随附的文档浏览器。 在Xcode 7中,可以通过从Xcode的“ 窗口”菜单中选择“ 文档和API参考”来找到文档浏览器。
由于您将广泛使用本文档,因此,您可能需要学习一些捷径以在文档中找到所需内容。 正如我在上一段中提到的,文档浏览器使您可以轻松访问文档。 要快速访问文档,请在Xcode中按Command + Shift + 0 。
在开发过程中,每次需要查找符号(例如类,方法或结构)时,在代码编辑器和文档浏览器之间来回切换很快就会变得很麻烦。
有两种解决方案可以有效地浏览文档。 每当您将光标放在Xcode的代码编辑器中的类或方法名称上时,右侧栏中的快速帮助检查器都会显示相应符号的摘要。 摘要包含几个有用的链接,这些链接带您进入文档浏览器。
因为在代码编辑器中工作时通常会隐藏右侧边栏,所以我使用了另一种方法来显示类或方法的文档。 每当您按下Option键并将鼠标悬停在符号上时,光标就会变为问号,并且该符号会突出显示。
通过单击带有问号的符号,将弹出一个新窗口,其中包含与“ 快速帮助”检查器相同的摘要。 单击窗口中的链接之一,将带您到文档浏览器。 这是在代码编辑器和文档浏览器之间切换的快速便捷的方法,尤其是在使用两个监视器时。
结论
您现在应该对iOS SDK和iOS体系结构的各个层都有很好的了解。 iOS应用程序的两个核心框架UIKit和Foundation是本系列下两期的重点。
这些框架不仅对于每个iOS应用程序都是必不可少的,而且还包含许多在开发本机iOS应用程序时经常使用的类。
如果您有任何问题或意见,可以将其留在下面的评论中,或通过Twitter与我联系。
翻译自: https://code.tutsplus.com/tutorials/ios-from-scratch-with-swift-exploring-the-ios-sdk--cms-25154
请发表评论