在研究iOS时,我看到这个图像由教师多次提出但是Apple frameworks list显示为好像你可以自由选择你想要实现的框架或类而不必通过每个层凿下来使用特定功能。例如,我的印象是,为了使用蓝牙服务,我需要从UIBit对象开始,例如UIButton,并且在允许使用蓝牙功能之前利用每个层中的对象,但这似乎不是构建应用程序时的过程。所以我的问题是为什么这个图像如此重要或者它试图传递哪些关于Apple提供的多个框架的消息?
答案 0 :(得分:2)
扩展@ Baglan的评论:每个"层"是一个抽象层次,但没有一个是全面的,你可以自由地在抽象的阶梯上走来走去。
是的,没有UIKit API(或最高层"层"上的其他API)包含蓝牙连接。但那是因为蓝牙本身就是一种较低级别的技术。 UIKit提供的API在概念上与CoreBluetooth提供的API相同,没有任何用处。
另一方面,UIKit和其他高级框架所做的是提供来自底层技术的进一步抽象,其中存在用于这种抽象的用例。因此,即使Apple Pencil和Siri Remote(Apple TV)使用蓝牙,UIKit也会提供抽象蓝牙细节的API,让您可以使用与用户和其他人更相关的条件来使用这些设备。应用
因此,如果您只想谈谈蓝牙,请使用CoreBluetooth框架。如果您只想使用音频,请使用CoreAudio框架等。
拥有抽象层并不意味着你必须包装并推送所有这些以获得你需要的东西 - 这意味着你可以下拉到你想要执行的工作的任何抽象级别。
我的印象是,为了使用蓝牙服务,我需要从UIBit对象(如UIButton)开始,并利用每个层中的对象
从某种意义上说,您的印象实际上是正确的。 iOS应用程序需要某种形式的UI,UIKit就是这样做的地方。所以你从视图和按钮开始,你为反应按钮按下的东西编写的代码可以根据手头的任务使用较低层的对象。
此外,"层"的想法本身就是一种抽象。 Apple平台上有超过一百个可供开发人员访问的框架,有助于在有用的集群中考虑它们。 Apple倾向于使用的方案通常依赖于抽象层的这种想法。
但是不止一个这样的计划。例如,查看https://developer.apple.com/reference/处的框架列表 - 在这里,您将找到混合"层的六个群集"隐喻具有更多面向任务的想法:应用程序框架,图形和游戏,应用程序服务,媒体和Web,开发人员工具和系统。值得注意的是," App Frameworks"不仅仅是"高水平"东西 - 在一起,UIKit,Foundation和/或Swift标准库是每个人制作应用程序所需的基本工具,而所有其他集群都是针对更具体(或更低级别)的任务。