浅谈iOS的SDK与API

    作为iOS开发人员,我们经常听到SDK,API。可是它们到底是什么?有什么作用呢?,有的人总是觉得它们太抽象了。

    接下来就让我们一起谈谈,因为技术知识无穷的,所以我说的可能会有一些不准确的地方,所以也希望广大的博友提出指正,大家一起进步~~

    SDK

     SDK,英文全称Software Development Kit,中文意思就是软件开发包。这个开发包通常都会包含API函数库、帮助文档、使用手册、辅助工具等资源。意思就是,SDK事实上是开发所需资源的一个集合。而API也被其包含其中,这个我们下面再讲。而开发iOS项目我们一般都会用到Xcode,那么SDK与XCode又是什么关系呢?两者的关系就像操作系统和软件的关系,操作系统给应用程序提供平台,你用软件实现你想用的功能。Xcode给SDK提供平台,你用SDK来编程,Xcode只是一个IDE,用于开发的一个工具而已,你也可以不用Xcode来开发。只是它是苹果官方比较提倡的,而且相对来说最大众,最好用而已。而SDK才是开发的灵魂,也就是说你所正真要用的东西。

     值得一提的是,现在直接说SDK都是代指开发Windows平台下的应用程序所使用的SDK,不过总的来说SDK的定义与作用都是差不多的。由这个我们也不难看出来,其实不管在什么操作平台下,什么编译语言。我们所用的本质规则都是一样的,同时我们也可以在从事自己的专业的时候,也借鉴一下别的领域,说不定就有意外的收货和感悟。

最后说一下,有的人之所以认为SDK难以理解,难以具体化,实例化。其实我觉得这正是SDK的广义性造成的,SDK 还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。正是因为它包含的东西多,广,深。所以SDK很难简单的,明了的定义在那里。这点大家也不要太纠结,我们以后接触的多了也就自然有了它的大致轮廓。

    API

    刚才说了,API是包含在SDK之中的,所以API的广义性就相对来说小一点。API这个词,全称叫Application Programming Interfaces(应用程序编程接口)。简单地说,就是一套套的要求,用来管理应用程序之间的沟通。API并不是什么新事物,在你使用PC或笔记本时,正是API让数据在程序之间传输。例如,把一个LibreOffice文档中的片断切割出来并传输到Excel表格上。系统级的API让LibreOffice这类程序能够运行在Windows这样的操作系统上。

也可以说操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令(动作)。API是通过把程序内部的一些功能有限地向外开放来做到的,这使得应用之间可基于各自的利益分享数据,同时不需要开发者公布所有的软件代码。对开源项目来说也是如此。你可以把它看成是一扇门、窗或杠杆,不管用什么比喻,一个程序和外面的软件世界的沟通就是由API定义的。

Mac OS X上的五大API  Cocoa,Carbon,POSIX,X11和Java

接下来我们说说比较重要和常用的API,Cocoa。Cocoa 应用程序一般在苹果公司的开发工具Xcode(前身为Project Builder)和Interface Builder上用Objective-C写成。不过,通过Java bridge、PasCocoa、PyObjC、CamelBones以及RubyCocoa等桥接技术,Java、Clozure CL、LispWorks、Object Pascal、Python、Perl、Ruby等其它工具或者语言也可以用来开发 Cocoa 应用

说道API,就不得不说说Cocoa Touch,Cocoa Touch由苹果公司提供的软件开发API, 用于开发 iPhone\iPod\iPad上的软件。也是苹果公司针对iPhone应用程序快速开发提供的一个类库。此库以一系列框架库的形式存在,支持开发人员使用用户界面元素构建图像化的事件驱动的应用程序。

这个大家一定都不陌生,我们开发时经常要建的类,这样一看就直观多了。

那么问题来了,Cocoa与Cocoa Touch就是一个单词的差别,有什么区别吗?

两者都包含OC运行时的两个核心框架:

Cocoa包含Foundation和AppKit框架,可用于开发Mac OS X系统的应用程序

Cocoa Touch包含Foundation和UIKit框架,可用于开发iPhone OS 系统的应用程序

Cocoa时Mac OS X的开发环境,Cocoa Touch是 Iphone OS的开发环境

现在大家明白了为什么我们经常用的Cocoa Touch比较多了吧,因为我们开发的大部分都是手机APP,所以用到Cocoa Touch也就自然了。

嘿嘿,以上就是本人对SDK与API一些浅薄的理解和总结,其中也是查了网上好多资料自己学的,看了好多大神的博客,也才有这么一点点进步,才接触博客,如果文章有什么不正确或者模糊的地方,也希望广大的博友指正出来,大家一起学习!

时间: 2024-12-05 06:28:36

浅谈iOS的SDK与API的相关文章

JavaScript:浅谈iOS与H5的交互-JavaScriptCore框架

JavaScript:浅谈iOS与H5的交互-JavaScriptCore框架 前言 小的作为一个iOS程序猿,可能研究JavaScript以及H5相关的知识并不是为了真正的要去转行做这一方面,其实更多的为了要研究OC中的JavaScriptCore框架,JavaScriptCore框架主要是用来实现iOS与H5的交互.当然了,最早我曾经写过iOS浅谈webView的JS一种用法.(去掉web显示页的广告),这种算得上最简单的iOS与H5的交互了.现在混合编程越来越多,H5的相对讲多,所以研究J

浅谈iOS中MVVM的架构设计与团队协作【转载】

今天写这篇文章是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇文章的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦~). 由于本人项目经验有限,关于架构设计方面的东西理解有限,我个人对MVVM的理解主要是借鉴于之前的用过的MVC的Web框架~在学校的时候用过ThinkPHP框架,和SSH框架,都是MVC的架构模式,今天MVVM与传统的MVC可谓是极为相似,也可以说是兄弟关系,也就是一家人了. 说到架构设计和团队

IOS中 浅谈iOS中MVVM的架构设计与团队协作

今天写这篇文章是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇文章的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦~). 每日更新关注:http://weibo.com/hanjunqiang  新浪微博 由于本人项目经验有限,关于架构设计方面的东西理解有限,我个人对MVVM的理解主要是借鉴于之前的用过的MVC的Web框架~在学校的时候用过ThinkPHP框架,和SSH框架,都是MVC的架构模式,今天MVVM与

浅谈iOS中的RunLoop

首先解释下为什么是浅谈,主要是RunLoop这个东西不单单是iOS的范畴,还涉及到操作系统,我指的浅谈仅仅针对ios上层应用,底层的东西概不涉及 ,所以只能浅谈浅谈了. 在浅谈RunLoop之前我们来写个小demo,超级简单,一个按钮,然后给按钮一个断点 这块标记了1,2,3,4 红色的字:其实这是这个APP启动的一个过程 但是说好了浅谈RunLoop为啥又扯到APP的启动了 ? 先不要在意这些细节... 我先来解释下我标出的1,2,3,4分别是啥东西 1,dyld :这是啥子鬼了? the d

浅谈iOS面试所遇问题

今天面试的公司之前在百科搜索了解了一些信息,一家专业拉手媒体运营商,付费通方便了用户出行,很喜欢公司的氛围. 言归正传,面对面试官的时候还是多少会有点小紧张,有几个问题回答的也是很笼统,现在做出总结.如下: 自我面试轻轻飘过~ 这个是常识 个人信息稍作了解,常识+1 浅谈MVC框架设计模式 浅谈单例设计模式 KVC/KVO Switch开关点击出错(on状态点击依旧on状态,解决方法) cell单元格重用出现的错误(解决方法) 怎样实现代理传值 怎样实现ImageView的点击事件处理 HTTP

浅谈iOS视频开发

这段时间对视频开发进行了一些了解,在这里和大家分享一下我自己觉得学习步骤和资料,希望对那些对视频感兴趣的朋友有些帮助. 一.iOS系统自带播放器 要了解iOS视频开发,首先我们从系统自带的播放器说起,一.我们可以直接播放视频,看到效果,不然搞了半天还播放不了视频,会让大家失去兴趣.二.其实对于很多需求来说,系统的播放器就能够胜任.简单介绍下 1.MPMoviePlayerController 在iOS中播放视频可以使用MPMoviePlayerController类来完成,具备一般的播放器控制功

浅谈 iOS 版本号

FIR.im 一直在尽量兼容不同使用习惯的版本号形式, 但是在使用中我们发现好多开发者对怎么更好的用版本号来标示应用很陌生. 这是篇基础文章, 简单介绍 iOS 的版本号. 名词解释 Version, 通常说的版本号, 是应用向用户宣传说明时候用到的标识. 一般有2段或者3段式, 如:2.1,8.1.2 Version 一般由产品部门确定, 完全迥异的更新需要改变主版本号, 比如 QQ 4.0 的变化非常大, 主版本的变化会更加吸引用户的眼球,所以有的应用会频繁的更新主版本号, 比如 FireF

寒冬之下,移动开发没人要了? 浅谈 iOS 开发者该 何去何从?

前言: 作者 | 梅梅    文章来源 CSDN 对于移动互联网而言,2018 年像是球场上的一声裁判哨.哨声响起,高潮迭起的上半场结束.本该再创辉煌的下半场,还没开赛却被告之:规则改变.场地收缩.教练下课.冷板凳无限加长. 这样前途未卜的下半场,你还敢上吗? 作为队伍「前锋」的移动端程序员,面对这样的挑战,又有哪些不一样的表现和前景?本文将结合招聘数据和候选人采访,展现移动端程序员「冰火两重天」的 2018 年. 2018:移动端上半场宣告结束 纵观近几年的平台数据,虽然移动端市场供需从 20

浅谈iOS单元测试

什么是单元测试? 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证.对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等.总的来说,单元就是人为规定的最小的被测功能模块. iOS中单元测试有什么意义? 大型项目开发,功能比较繁琐,代码量比较大,调试某一块功能需要不断的Command+R运行调试,很显然这样的功能是非常非常的低效的,编写过程中以及App功能完成后