《企业级ios应用开发实战》一导读

6e9087a6e4d9a22d0badf1a26e25044c77763c66

前 言

为什么写这本书
随着我国3G网络和移动互联网的兴起,许多传统的企业应用正在从桌面向移动终端扩展,移动办公、移动营销、移动作业等需求日渐强烈。
有迹象表明,传统的互联网正在向移动互联网发展。根据摩根士丹利发布的全球互联网发展趋势报告(Mary Meeker 2010)显示:全球互联网发展趋势正在由PC-Internet向Mobile-Internet转变,手机在某种意义上已经主导着互联网的发展,新兴的下一代互联网,即Mobile 2.0正在崛起,这完全得益于移动通信技术的迅猛发展。这不仅仅是一场由最新数码科技与网络技术导致的变革,还是传统企业应用从Internet向移动互联网转移的前提和诱因。
与PC相比,移动终端的这种全新用户体验是不可替代的,在一定程度上吸引了人们从桌面向移动终端的转移。而且,移动互联网也凭借着其出色的业务吸引力和资费吸引力,成为人们生活中不可或缺的一部分。
然而,机遇与挑战并存。对于企业而言,能否将自己的企业应用向移动互联网扩展,仍然存在着巨大的风险。诸如:用户体验改变、企业信息安全和企业机密泄露、移动应用开发中存在的技术风险等。
以苹果iOS为代表的移动应用开发正方兴未艾。iPhone和iPad正式进入中国的时间其实还不到3年(iPhone于2010年7月正式在中国香港上市),国内开发者在苹果商店上淘金的时间比这要早些,但绝对不会超过4年。实际上,App Store 拥有的历史还不到5年(App Store正式上线时间是2008年7月11日)。所以说,iPhone 应用开发仍然有着无限的潜力,称为“历史”恐怕为时尚早。因此,作者选择了以iOS为目标平台的企业移动应用开发作为本书讲述的主题。
作者于2009年起开始接触iOS开发。对于一个多年奋战在企业应用开发第一线的开发人员来说,iOS企业开发是一个全新的领域。完全陌生的Mac OS X操作系统,别扭的Xcode IDE和Interface Builder,古怪的iOS……由于不知道什么是开发证书和代码签名,甚至在第一次调试我的3.5英寸屏幕的iTouch时,都是充满了坎坷。
当我历尽千辛万苦,终于逐渐步入iOS开发这座大门。然而,却又面临新的问题:“企业应用是否能向iOS平台进行迁移?”
从我第一天接到任务起,这样的怀疑就在我心中存在。iOS实在是太封闭了,相对于Android这样的开放平台,iOS 平台对企业开发人员的限制实在是太多。而且,App商店始终只是游戏开发者的天堂,90%以上的个人开发者把自己的目光盯在了游戏、娱乐等个人应用领域,企业应用根本无法登上App商店的大雅之堂。原因也很好理解,企业应用不会为苹果公司带来可观的利润分成,App商店的盈利模式是基于应用下载量的。一个企业应用会有多少用户?几百万?几千万?不,大多数企业应用的用户量不会超过5位数。没有庞大的用户群,就不会给App商店带来丰厚的利润分成。实际上,我第一次向App商店提交一个企业应用时,被无情地拒绝了。苹果公司给的理由很直白:“你的应用只针对有限的用户群”,换句话说“苹果将无利可图”。
幸好苹果公司提供了“企业开发程序”(企业版IDP),虽然购买“企业开发程序”需要299美金一年,但对于一个真正决心将企业应用向iOS 移动终端扩展的企业来说,还是负担得起的。“企业开发程序”不需要苹果公司审核,使用“企业开发程序”部署应用不需要经过App商店,企业可以任意分发给自己的用户,苹果公司也不会找你要一分钱。
可以预料,在将来一段时间内,国内的iOS个人应用开发者将不断向企业开发领域转移。实际上,苹果商店中个人应用的数量已经饱和,开发者的生存空间将逐渐变得狭小。大量的同质竞争直接导致了App商店的生态环境恶化,同类应用竞争激烈。为了保持 App 商店的竞争力和盈利模式不趋于低质化,苹果公司今后对商店应用的审核将越来越趋于严格,开发者想在商店中获利和生存的难度将越来越高。国内的公司及个人开发者会逐渐将目光转移到位于App商店生态圈之外的企业应用,iOS企业应用将成为今后新的利润增长点。
最近,企业移动应用开发出现了一些新的趋势。最新的企业移动应用,有从 Native App(即本地代码)向云发展的趋势,比如 HTML5、虚拟桌面。HTML 5 充分利用移动终端的浏览器(如Safari或IE)和网络连接能力,来访问企业服务,并实现“一次开发,跨平台共享”的目的。而虚拟桌面则利用“数据中心”进行桌面的扩展,将客户端的数据、资源和图像放到了“云”上,iOS 客户端则通过网络访问个人桌面。虚拟桌面一般作为企业的“云计算”解决方案进行实施,市场上比较成熟的产品主要来自VMWare、Citrix、Microsoft和Oracle等几大厂商,它跟开发人员没有太大的关系。还有一种趋势就是“服务器配置+中间代码+本地代码”。开发人员在服务器上以配置的方式产生出中间代码,然后服务器将中间代码编译为多个平台的本地代码(iOS、Android、Sybian、Windows),然后分别部署,以此实现跨平台的目的。
这些趋势的出现,从一定程度上试图解决当前本地代码开发(iOS开发、Android开发)的弊端,但效果还难以令人满意,比如都有性能下降、用户体验差、网络带宽占用大等缺点。因此,就目前来说,移动应用开发仍然是以本书介绍的本地代码开发为主流。

本书特色

本书是作者多年开发经验的总结,很多内容来自作者在CSDN上的博客,书中不少内容是经验之谈。本书根据iOS操作系统更新频繁的实际情况,针对新的SDK版本进行了内容上的调整(本书内容适用于SDK 4.0~5.0,本书所有代码在Xcode4.3下编译通过)。在介绍每一种SDK框架的同时,注重扩展,在继承的基础上进行创新,而不是一味复制、粘贴代码。

本书具有如下特点:

主题明确,以“iOS”和“企业开发”为主题, 但并没有将二者割裂开来,而是将二者紧密联系、互相呼应。首先由浅入深介绍了整个SDK框架层次,包括Objective-C语言简介、SDK的构成、Foundation框架、UIKit框架、QuartzCore、CoreAnimation以及其他第三方扩展框架,然后对在企业应用中一些需要特别讨论的方面(如安全、网络、APN、多线程等内容)进行专门的论述。撇开企业开发的特色不谈,本书也完全可以作为一本iOS开发的经典教材。
理论和技术兼顾。许多iOS开发书籍,轻理论,重技术,往往只告诉你怎么做,而不告诉你为什么要这样做,难以让读者在理解的基础上加深记忆。而本书以理论为纲,以技术为体,从基本理论到具体使用的技术都一一道来,不仅告诉你怎么做,而且将每一种技术的来龙去脉阐述清楚。在讲解具体技术的同时,不时穿插着小的知识点,让读者进一步拓宽相关的背景知识。
详细分析代码,实用性强。作为编程类书籍,免不了有大量的代码。但本书对多数代码都进行了阐释,重点内容还会有专门的标注,如“提示”、“注意”等,以提醒读者注意,或者及时回顾前面的知识点。本书中的每一个示例程序,都收录到本书的随书光盘中。所有的程序都经过作者认真调试,可以直接运行。

合适阅读本书的人

本书适用于以下读者:
从未接触过Objective-C、从其他语言转向iOS开发、有一定面向对象编程基础的程序员。
正准备转向企业移动应用开发的 iOS 应用程序开发人员 。

如何阅读本书

这是一本讲述iOS和企业应用开发相结合的书,介绍如何在iOS上进行企业应用的开发及分发、部署。本书从一个企业应用开发者的角度出发,以实现企业移动办公和3G应用为宗旨,介绍如何充分发挥苹果新一代操作系统iOS的优势和iPhone手机的软、硬件特性将企业应用扩展到iOS平台。在最后一章以step by step的形式介绍了一个实战项目,以达到理论与实践结合的目的。本书也对苹果Cocoa框架和其他第三方开源框架进行了深入介绍。
针对本书面对的两种主要读者,我们建议如下:
对于本书第一类读者,即“从未接触过Objective-C、从其他语言转向iOS开发、有一定面向对象编程基础的程序员”,本书提供了一个快捷的Objective -C语言入门,以及一个简单易读而又务实详尽的iOS SDK入门教程;本书的全部章节都将有助于读者尽快对Objective -C及iOS SDK有一个全面的了解,并迅速跨入iOS开发的大门。
对于本书第二类读者,即“正准备转向企业移动应用开发的 iOS 应用程序开发人员”,可以省略阅读本书部分章节,例如第2、3、4、5、6各章,但本书其他一些章节具备了良好的参考价值,例如:第10章以后的各章,在这些章节中,有部分内容是其他参考书中难以见到的,可以有选择地阅读相应章节。

本书共分19章,主要内容如下:

基础篇
第1章介绍了企业应用的概念,什么是iOS企业应用,iOS企业应用的框架及构成,特别是对于苹果iOS企业证书申请和iOS企业应用程序的部署方式(In-House、Ad-Hoc、OTA)进行了详细的介绍。
第2章介绍iOS SDK,包括其框架和构成。iOS SDK是iOS开发中最为重要的工具和武器,每个iOS开发人员都必须熟悉并深刻理解它。
第3章介绍iOS开发语言Objective-C。对于没有接触过这种语言的读者,将在本章对Objective-C有一个全面的理解。本章从两个方面对Objective-C进行了介绍,即Objective-C的C语言特性和面向对象特性。也对Objective-C的一些现代语言特性,如块编程(函数式编程中的主要内容)、反射(运行时支持)和可变参数也进行了介绍,这些内容在其他书籍中是比较罕见的。
第4章介绍Xcode IDE。从Xcode 4.0开始,苹果对其功能和界面进行了全新的设计,把Interface Builder完全整合到Xcode中,使程序员的开发效率更高。
第5章单独对Xcode中的Interface Builder 进行了进一步介绍,特别是Assistant Editor的出现,与之前的版本相比,大大简化了开发人员进行各种连接(IBOutlet和IBAction)的操作。
第6章介绍UIKit以及UIKit中包含的一系列最基本的UI组件,此外,介绍了如何在UIKit的基础上进行扩充,创建自己的自定义组件库。
企业应用篇
第7章到第10章,依次从网络、XML/Json、数据存储、安全这几个方面进行介绍。这些内容中,有相当一部分是企业开发人员早已熟知的领域(如网络、XML/Json、数据存储和安全)。这些章节结合iOS自身的特点进行详细的阐述,包含安全沙箱、嵌入式数据库以及iOS安全框架等内容。
第11章介绍Cocoa的多媒体、Quartz 2D和Core Animation框架。
第12章介绍Cocoa Touch 特有的多点触摸和手势识别。
第13章介绍如何利用iPhone的多语言支持实现应用程序的国际化。
第14章涉及两个方面:传统的线程编程和并行编程GCD(Grand Central Dispatch)。在企业应用中,免不了要使用多线程。前者是传统的异步编程技术,直接与操作系统底层的线程打交道;后者是iOS 4.0以后新的异步编程技术,以一种函数式编程的方式,达到让系统自动进行线程管理的目的,从而避开了线程编程的复杂性。
第15章介绍通知、本地通知和远程通知。通知是多个对象间进行对话的机制,但耦合性低于直接的方法调用。本地通知和远程通知是两种不同的进程唤醒技术,前者由系统来唤醒,后者通过RPC(Remote Process Calling)唤醒。
第16章介绍开源框架Core Plot。Core Plot是著名的2D图形框架,用于绘制散点图、柱状图和饼图等图表。
第17章针对iOS特有的硬件特性进行介绍,如通讯簿、相机、加速计和GPS。
实战篇
第18章,介绍“企业APN”在企业中的应用,以及使用“企业APN”网络对iOS客户端的一些特殊要求。该章实际上包含了一个实战项目,即一个简单的APN切换工具(同时也提供了简单的网络状态检测)。在这个实战项目中,涉及了广泛的内容和前面诸多章节中介绍的知识,诸如后台任务、配置描述文件、BSD Socket编程、网络检测、Safari阻塞和并行编程GCD。
第19章以案例导航的方式介绍了一个实战项目,指导读者从用户的实际需求出发,结合本书中讲述过的理论知识和技术,开发一个完整的iOS邮件客户端,使读者对企业应用的开发有直观的认识。

目 录

第1章 企业应用的话题
1.1 什么是企业应用
1.1.1 传统意义的企业应用
1.1.2 iOS 企业应用
1.2 iOS企业应用程序的架构
1.2.1 服务端
1.2.2 iOS 客户端
1.3 iOS企业应用程序的发布
1.3.1 iOS应用程序发布与App Store
1.3.2 Ad-Hoc与In-House发布
1.3.3 OTA无线部署

第2章 iOS开发框架简介
2.1 苹果iOS 简介
2.2 iOS框架介绍
2.3 Cocoa Touch 框架简介
2.4 搭建iOS开发环境
2.4.1 安装Mac OS X操作系统
2.4.2 下载安装SDK
2.5 写一个iPhone程序
2.6 在模拟器上运行应用程序
2.7 在 iPhone 上运行应用程序

第3章 Objective-C 语法简介
3.1 Objective-C的C语言特性
3.1.1 一个简单的 Hello World
3.1.2 Objetive-C是另一种C
3.1.3 数据类型
3.1.4 常量、变量和宏
3.1.5 #include和#import
3.1.6 函数
3.1.7 分支和循环
3.2 面向对象的C
3.2.1 类和对象
3.2.2 消息机制
3.2.3 Objective-C 的内存管理
3.2.4 类别和协议
3.2.5 反射机制
3.2.6 谓词
3.3 MVC模式
3.4 KVO模型
3.4.1 注册KVO
3.4.2 接收变更通知
3.4.3 发送变更通知
3.5 块编程
3.5.1 块的特点
3.5.2 Objective-C 中的块
3.6 可变参数
3.7 本章小结

第4章 Xcode集成开发环境
4.1 创建第一个Xcode应用程序
4.2 构成应用程序的那些东西
4.2.1 Info.plist 和 pch 文件
4.2.2 Xib 文件
4.2.3 资源文件
4.2.4 源代码文件
4.2.5 项目和目标
4.2.6 Frameworks
4.2.7 应用程序的文档目录和临时文件夹
4.3 了解Xcode为我们做了些什么
4.3.1 main.m
4.3.2 应用程序委托
4.4 在Xcode中添加View Controller
4.5 在Xcode中添加框架
4.6 Xcode 使用技巧
4.6.1 自动完成
4.6.2 查找和替换
4.6.3 快速帮助
4.6.4 快照
4.6.5 书签
4.6.6 使用导航条
4.7 本章小结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288849.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么要选择Hibernate

2019独角兽企业重金招聘Python工程师标准>>> 见: http://onecan.iteye.com/blog/1387920 转载于:https://my.oschina.net/sniperLi/blog/416396

苹果手机5s无需越狱免流_苹果越狱手机端自签名插件

unc0ver越狱官网: https://github.com/pwn20wndstuff/Undecimus (此网站ipa需要签名)已经签名网站: https://jailbreaks.fun/支持iOS11.0~12.1.3~12.4 支持 iPhone5S/SE/6/6P/6S/6SP…

【C语言简单说】十五:while循环

上一节说了for循环&#xff0c;那么我们说一下while循环&#xff1b;其实都是循环&#xff0c;就好比肯德基和徳啃鸡一样&#xff0c;卖的都是鸡~ ㄟ(▔&#xff3e;▔ㄟ) (╯▔&#xff3e;▔)╯ 上代码&#xff1a; #include<stdio.h> #include<stdlib.h> int…

我的世界java版月步教程_《我的世界》月步?幻影剑?大神才会的骚操作 第一个我就跪了!...

你知道《我的世界》玩家之间的差距有多大吗&#xff1f;“咦&#xff0c;我怎么自己动了&#xff1f;”还没看清楚自己怎么被人拉到跟前&#xff0c;敌人的钻石剑已经在方块菌身上戳出了数道伤痕。每次遇到一些操作大神&#xff0c;“佛系”玩家方块菌真的被打得找不到北&#…

大数据能否力挽国足败落狂澜?

叙利亚多惨&#xff0c;媒体大概已经全方位铺陈过了。作为难民数量最多的国家&#xff0c;战争冲突爆发后&#xff0c;叙利亚足球联赛被迫停摆。虽然在2014年恢复了联赛的进行&#xff0c;但观众数量锐减&#xff0c;从上万到百人&#xff0c;更要直面数以百计的叙利亚球员不得…

最通俗易懂的依赖注入之服务容器与作用域

推荐关注「码侠江湖」加星标&#xff0c;时刻不忘江湖事这篇文章是 ASP.NET 6 依赖注入系列文章的第 3 篇&#xff0c;点击上方蓝字可以阅读整个系列。在上一篇文章中&#xff0c;我们讨论依赖注入的基本用法与生命周期。接下来&#xff0c;在这篇文章中&#xff0c;我们继续深…

深度学习入门(python)考试速成均方误差

均方误差 表示神经网络的输出&#xff0c;表示监督数据&#xff0c;表示数据的维度。 这里神经网络的输出y是softmax函数的输出 数组元素的索引从第一个开始依次对应数组“0”&#xff0c;“1”&#xff0c;“2”&#xff0c;...... 由于softmax函数的输出可理解为概率 由此…

postgresql select for update 多行加锁顺序_PostgreSQL和Mysql的MVCC实现机制的差异对比

任何数据库的主要要求之一就是实现可伸缩性。只有将争用&#xff08;锁定&#xff09;最小化&#xff08;如果不能一起删除&#xff09;&#xff0c;才可以实现。由于读/写/更新/删除是数据库中发生的一些主要的频繁操作&#xff0c;因此对于这些操作并发进行而不被阻塞非常重要…

WireShark抓DNS请求和回复数据报的分析

1 DNS简单理解 我们简单理解DNS功能是把域名转成IP地址,我们先发送一个NDS请求数据包到本地域名服务器去找,找不到我们就去根域名服务器去找,根域名找不到我们再把顶级域名服务器地址回复给本地域名服务器,然后本地域名服务器到顶级域名服务器去查询,如果依然找不到,同理…

12款白帽子用于黑客渗透测试的操作系统

想知道什么样的操作系统的是白帽子黑客的最爱吗?本文我们将推荐12个操作系统&#xff0c;包括一些Linux发行版&#xff0c;如Kali Linux&#xff0c;Parrot安全操作系统&#xff0c;BlackArch等。这些以安全为重点的操作系统&#xff0c;可以帮助白帽子黑客进行渗透测试&#…

jqurey操作radio总结

2019独角兽企业重金招聘Python工程师标准>>> 在我们前端的项目中&#xff0c;会经常用到radio单选按钮&#xff0c;下面给出个例子总结jquery对radio的各种操作&#xff1a; 示例如下&#xff1a; <html> <head><meta charset"UTF-8">&…

android中文离线api_比林肯法球Linken sphere浏览器更多更新指纹的国产防关联软件-VMLogin中文版浏览器...

林肯法球&#xff08;Linken Sphere&#xff09;是俄罗斯人开发的一个功能强大的浏览器&#xff0c;该工具最早出现在2017年7月&#xff0c;此外还具有“离线记录模式”功能&#xff0c;能够简化会话之间导入和导出cookie的过程。使用Linken Sphere工具开启浏览器会话时&#x…

【C语言简单说】十七:数组

** ( ิ∀ิ ) 还有两个小节就基本上简单的过了一遍C语言了&#xff0c;现在我们来讲诉什么是数组。** 字面意思&#xff1a;数组&#xff0c;数组的一个组&#xff1f;应该说一堆数值的一个集合&#xff1f;我不知道大家的年龄段在于什么阶段&#xff0c;如果学过集合的话&am…

Blazor University (12)组件 — 组件生命周期

原文链接&#xff1a;https://blazor-university.com/components/component-lifecycles/组件生命周期源代码[1]Blazor 组件具有许多我们可以重写以影响应用程序行为的虚拟方法。这些方法在组件生命周期的不同时间执行。下图概述了这些生命周期方法的流程。组件生命周期图SetPar…

如何通过css控制内容显示顺序 第二行的内容优先显示

我们有时进行网页设计时为了想让用户感兴趣的内容优先显示在前&#xff0c;又不想改动代码的先后顺序&#xff0c;要怎么操作呢&#xff1f;&#xff08;或者换种说法&#xff1a;源代码中要先看到A再看到B&#xff0c;而视觉上是先B再A&#xff09;举个简单的例子&#xff0c;…

【C语言简单说】十七:数组(补)

上一节 我们所说的数组是整数类型的对吧&#xff1f;那么我们还有其他类型 的数组&#xff0c;在这里用字符数组举例。 如下代码&#xff1a; #include<stdio.h> #include<stdlib.h> int main() {char a[5]{a,b,c,d,e};int i;for(i0;i<5;i){printf("a[%d…

WireShark之抓包过滤链接部分

1 问题 我们打开WireShark&#xff0c;开始抓包&#xff0c;然后浏览器输入http链接地址&#xff0c;那我们怎么快速在WireShark里面找到 2 解决办法 1&#xff09;在WireShark里面输入http 2 ) Ctrl F,然后选择字符串&#xff0c;然后在字符串的右边输入 我们要过滤的部分…

最通俗易懂的依赖注入之生命周期

这篇文章是 ASP.NET 6 依赖注入系列文章的第二篇&#xff0c;点击上方蓝字可以阅读整个系列。在上一篇文章中&#xff0c;我们讨论了什么是依赖注入和控制反转&#xff0c;以及它的作用是什么。在这篇文章中&#xff0c;我们先演示一下依赖注入的基本用法&#xff0c; 然后再讨…

Cnblogs自定义皮肤css样式-星空观测者

不知不觉来Cnblogs也这么久了&#xff0c;然而Blogs提供的主题还是依旧那么复古&#xff0c;总觉得阅读起来难免枯燥&#xff0c;虽然我认为做技术不可以太过浮躁&#xff0c;但是一个美观的主题终究是吸引人眼的第一要素。 毕竟这么久了&#xff0c;在博客园还没有发现一个比较…

我的世界java版forge怎么用_我的世界电脑版MOD怎么用 我的世界pc版forge怎么安装...

我的世界由游戏本体以及启动器两部分组成&#xff0c;要玩游戏就要下载好本体再用启动器启动&#xff0c;单有游戏或者单有启动器都是玩不成的&#xff0c;想知道我的世界电脑版怎么开始&#xff0c;我的世界pc版启动器怎么用就来看看吧&#xff01;▍MOD怎么用1.安装MOD前要先…