Choose your own way in apple development

我罗列了一个苹果 SDK 的清单,希望能帮助对于苹果开发拥有无限热情的工程师找到一个适合自己的开发精进之路!

分类 高优先级 低优先级
App Frameworks UIKit, Foundation, AppKit BundleResources, TVUIKit, TVML, TVMLKit, WatchKit
App Services CoreFoundation, CoreData, CoreLocation, CoreML, CoreMotion, CoreSpotlight, CoreText Accounts, AddressBook, AddressBookUI, Contacts, ContactsUI, EventKit, EventKitUI, FileProvider, FileProviderUI, Messages, MessageUI, UserNotifications, UserNotificationsUI, AdSupport, iAd, ApplicationServices(mac), BusinessChat, CallKit(iOS), CarPlay(iOS), ClassKit(iOS), ClockKit(watch), DeviceCheck, HealthKit, HomeKit, MapKit, PassKit, PushKit, SiriKit, StoreKit, WebKit, NewsstandKit, JavaScriptCore, MultipeerConnective, NatureLanguage, NotificationCenter, PreferencePanes, QuickLook, SafariServices, SMS and Call Reporting, Social, Speech, TVServices, WatchConnectivity
Graphics CoreAnimation, CoreGraphics, CoreImage, Vision, ARKit, GLKit, Metal, MetalKit Model I/O, Image I/O, PDFKit, ReplayKit, ColorSync
Games GameController, GameKit, GameplayKit, SceneKit, SpriteKit  
Media AVFondation, AudioToolbox, AudioUnit, VideoToolbox, AVKit, PhotoKit, CoreAudio, CoreAudioKit, CoreMedia, CoreVideo, AssetsLibrary, CoreMIDI, HTTPLiveStreaming, MediaPlayer, MediaAccessibility, QTKit(mac), FxPlug, iTunesLibrary(mac), MediaLibrary(mac), ProfessionalVideoApplications, ScreenSaver(mac)
System ObjectiveC-Runtime, CFNetwork, Dispatch, MobileCoreServices, Network, SystemConfiguration, Security Accelerate, AuthenticationServices, Collaboration, Compression, CoreServices, CoreTelephony(iOS, mac), NetworkExtension

面对苹果SDK中多如繁星的 API,该怎么办?

当今移动互联网的应用场景逐渐演化为从重客户端到轻客户端的混合模式。轻客户端中B/S 模式的业务相对多一些。重客户端,会更多利用原生UI和原生系统特性实现业务。轻客户端会偏向使用原生平台作为粘合剂,通过 H5 来完成部分业务的跨平台实现,在提高研发效率和统一的用户体验上,达到了相对不错的效果。

对于 iOS 开发来说,有不同的路径可以选择,你可以在 iOS 领域成为多媒体方面的专家,也可以成为交互专家,可以成为 LBS 行家里手,更可以成为图像处理权威。

你到底能成为什么样的专业人才,取决于你的学习路径。面对浩瀚的官方SDK,我们不能盲目的跳进去学习,需要根据业务场景来决定如何构建你的知识架构。

Application: UIKit, Foundation (提供了人机界面交互,基础数据类型,操作系统服务等基础功能)

AppServices: 提供了更多的系统服务层面的特性,例如:核心数据,机器学习,文字排版,联系人,日历,文件处理,iCloud存储,Siri,健康,地图,短信息,电话,WebKit,系统通知等大量常用特性。苹果将这些特性,定义为应用服务层面。

Graphics: 提供了图像方面的处理能力。例如:滤镜功能,2D&3D 图形处理,游戏相关功能。

Media: 提供了手机多媒体数据访问和处理能力。例如:音视频播放业务,网络直播,手机拍照等。

System: 提供了更多操作系统底层特性,例如:并发计算,底层网络,硬件传感器和设备,驱动,分发队列,移动网络配置,安全加密等功能。

从上面的SDK列表,可以看出,Apple SDK 整体可以分为5个部分,分别是 应用框架(App Frameworks), 应用层服务(App Services), 图形,游戏,多媒体,以及系统层。(对于开发者工具(Developer tools)我们会放到后面的文章中单独讨论)。

对于在iOS 开发学习中感到迷茫的同学来说,首先,毋庸置疑,一定要从应用框架层入手,构建一些具有简单人机界面的项目。随着项目涉及业务内容的增加,你会需要更多的涉及应用服务层提供的功能(网络,文件处理,地图,短信,通知等),来增强你的应用功能;紧接着随着业务的深入发展,你一定会需要从图形,图像,音频,网络,性能,网络,数据处理等一个或多个领域深入研究,以提高项目在这些方面的表现力(绘图性能,动画效果,网络利用率,计算速度等)。

经过一番梳理,相信大家在面对多如繁星的SDK API 的时候,内心会多一些平静,也能根据自身的工作需要深入研究成为iOS 开发领域中具有个人特色的技术专家。

Back