确定了要学ios,首先必须做好一下准备工作:一台Mac Pro或其他苹果电脑
创新互联公司是一家专业提供梅列企业网站建设,专注与网站制作、做网站、H5场景定制、小程序制作等业务。10年已为梅列众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
从Apple Store上面下载需要的Xcode版本并安装 这肯定是需要花费一笔钱的
如果有语言基础的,可以看视频自学,现在网上有很多ios的视频,自学能力不够的话可以考虑找个老师教一下
1.Sams Teach Yourself iOS 5 Application Development in 24 Hours
我学习的时候只有ios5版本。这本书是我见过的最好的ios入门书籍,没有之一。概念介绍清晰(初学者不该懂的概念绝对不废话);实践性强;节奏适当。不夸张地说,这本书看了2/3,我已经能做一个app了。(当然功能有相对的局限性,而且还有一些细节问题需要解决,但主要在设计美工环节。事实上,我的第一个app就是完全看完这本书后做的。)
这本书的缺点只有一个:对于OC语言的介绍不够充分。如果之前没有接触过程序设计语言可能有点儿麻烦。但是对于有编程基础的人来说不是问题。如果遇到语言问题,可以和《Learn Objective-C on the Mac》一起看。(见下介绍)
2.Learn Objective-C On The Mac 2nd Edition
我忘记了我看的1st Edition还是2nd Edition了。不过OC变化不大,没有影响。这是介绍OC语法的书。建议边学ios开发边看。我不建议一下子只扎进oc中,而弃ios sdk不顾。
3.Beginning IOS 5 Development
Beginning iOS 6 Development : Exploring the iOS SDK
我当时看的是ios5版本。事实上,我一上来就看这本书,后来发现这本根本不适合入门!因为在ios5的时代,这本书介绍的方法依然是ios4的(比如不用storyboard)!我有很多朋友都企图用这本书入门,但最后都失败了。但是我依旧建议看完《Sam》后看看这本书。因为介绍了很多更细节的东西,而且也很有用(比如用代码控制界面、控制界面的转移、包括Core Data,Media相关的一些高级内容等)!在入门的基础上看完这本书,对ios开的理解能上一个层次。
4.Pro iOS Table Views : for iPhone, iPad, and iPod touch
非常非常推荐的一本书。前面说的基础书籍对tableView的介绍是不够详尽的。但是tableView在ios应用开发中是非常重要的一块(至少我做的app都比较依赖tableView)。吃透这本书,tableView基本完全不成问题了。再次吐血推荐!(看完这本书,大多数应用类app都敢做了。)
5.Beginning iPad Development for iPhone Developers
虽说是一本介绍ipad的书,但其实看完sam加上自己的实践,制作universal的app不是什么难事。ipad也没那么特殊。不过这是一本非常好的介绍
ios graphics capabilities的书!这本书会带你完成一个简单的绘图app,之后你基本能够熟练地使用ios的graphics相关功能了。(注:和Quatrz;Cocoa;OpenGL ES的Graphics不是一回事儿。)
6.Programming iOS 5 : Fundamentals of iPhone, iPad, and iPod touch Development
Programming iOS 6
非常厚。比之前介绍的书都厚。而且都是干货,所以读起来也慢。我当时看ios5版本。这本书比较全面地介绍ios。建议彻底入门了,甚至已经做出几个app了以后翻看。可以学到很多没有注意过的细节;或者没有用到过的features。虽是个大部头,但是强烈推荐。
7.Pro Multithreading and Memory Management for iOS and OS X : with ARC, Grand Central Dispatch, and Blocks这是关于ios多线程和内存管理的入门书籍。这部分内容比较深,其实普通开发者可以不完全理解这些机制了。尤其是ios5有了ARC之后。我基本翻完了这本书,但是对于其中的一些东西理解的不透彻(尤其是Multithread部分)。不完全推荐,但感兴趣的同学可以看看。
8.Beginning iOS Game Development
这本书非常基础。如果你已经入了门,读这本书简直轻而易举。我花了一个下午的时间翻完这本书。主要是想学习一下ios动画相关的内容。里面只有很少的几章涉及了相关内容,但是对于一些基本功能的实现已经够了。如果想了解更多ios动画的内容,还是需要到网上去找。我没有找到很好的图书资料。
这就是我完全看过的书。还有一些书觉得应该不错,但是一直没有时间看。而且等入了门,实践的动力远远大于看书学习的动力,所以查文档越来越多。希望能够帮到你,也希望能得到大家指正。
《高性能iOS应用开发》([美] Gaurav Vaish)电子书网盘下载免费在线阅读
资源链接:
链接:
提取码:iuk2
书名:高性能iOS应用开发
作者:[美] Gaurav Vaish
译者:梁士兴
豆瓣评分:7.8
出版社:人民邮电出版社
出版年份:2017-4
页数:384
内容简介:性能对用户体验有着至关重要的影响。本书将介绍对用户体验产生负面影响的各个方面,并概述如何优化iOS应用的性能。全书共5个部分,主要从性能的衡量标准、对应用至关重要的核心优化点、iOS应用开发特有的性能优化技术以及性能的非代码方面,讲解了应用性能的优化问题。本书的主要目的是展示如何从工程学的角度编写最优代码。本书适合已经具有Objective-C和iOS实践经验的开发人员阅读。
作者简介:作者简介:
Gaurav Vaish 就职于雅虎公司的移动和新兴产品团队,为每月有数亿人使用的移动应用创建优雅的可重用方案。他曾是IIT全球指导计划的成员,还在印度班加罗尔创立了InColeg Learning及Edujini Labs有限公司。
译者简介:
梁士兴 毕业于北京航空航天大学,现任职美团-大众点评iOS高级技术专家。有多年的一线iOS开发经验,对于iOS应用性能有深入研究和独到见解。对iOS前沿技术、移动应用架构模式非常感兴趣。
郝田田 毕业于西安电子科技大学,现任职美团-大众点评iOS研发工程师,具有丰富的iOS软件开发经验,长期关注iOS领域前沿技术,曾参与数本iOS技术类书籍翻译工作。
陈作君 毕业于北京理工大学,现任职滴滴出行iOS研发工程师,多年大型移动端应用开发经验,热衷于开源项目建设,是一名技术书籍翻译的爱好者。
1.什么是蓝牙4.0,蓝牙其它标准又是什么?
详细描述:低功耗蓝牙(Low Energy; LE),又视为Bluetooth Smart或蓝牙核心规格4.0版本。其特点具备节能、便于采用,是蓝牙技术专为物联网(Internet of Things; IOT)开发的技术版本。所以它最主要的特点是低功耗,普及率高。现在所说的蓝牙设备,大部分都是在说4.0设备,ble也特指4.0设备。 在4.0之前重要的版本有 2.1版本-基本速率/增强数据率(BR/EDR) 和 3.0 高速蓝牙 版本,这些统称为经典蓝牙。4.0还有4.1和4.2的小版本,其中4.2版本对传输速率做了进一步他提升,提高了2.5倍,苹果从iphone6开始使用4.2,最新的蓝牙标准为蓝牙5.0,其中最大的特点连接范围扩大了4倍,速度又提高了2倍,无连接数据广播能力提高了8倍,增加了蓝牙组网的能力。
2.蓝牙开发必须知道的概念。
2.1.1 central和peripheral:
蓝牙应用开发中,存在两种角色,分别是central和peripheral(pə’rɪfərəl) ,中文就是中心和外设。比如手机去连接智能设备,那手机就是central,智能设备就是peripheral。大多时候都是central去连接peripheral的场景。
2.1.2 广播和连接:
peripheral会发出广播,central扫描到广播后,可以对设备进行连接,发出connect请求,peripheral接收到请求后,同意连接后,central和peripheral就建立了连接。
2.1.3 连接后的操作:
write,read,notify,indecate, response or not …
indecate和notify的区别就在于,indecate是一定会收到数据,notify有可能会丢失数据(不会有central收到数据的回应),write也分为response和noresponse,如果是response,那么write成功回收到peripheral的确认消息,但是会降低写入的速率。
2.1.4 协议:
每个具体的智能设备,都约定了一组数据格式,这个就是数据协议,例如手环中获取到数据0X001023,其中第2位到第5位表示步数,那么就2310就是步数的16进制的数据,转换成10进制就是8976步,需要注意的是,设备端都是小端模式,所以取4位时候,高字节在前低字节在后。
3. iOS蓝牙应用的一般开发流程。
4. 蓝牙的数据交互。
write,read,notify,indecate, response or not … 都是容易理解的,indecate和notify对应的是长连接,建立indecate后,peripheral可以随时往central发送数据。
indecate和notify的区别就在于,indecate是一定会收到数据,notify有可能会丢失数据(不会有central收到数据的回应),write也分为response和noresponse,如果是response,那么write成功回收到peripheral的确认消息,但是会降低写入的速率。
对于一个charateristic,他的读写订阅的权限是peripheral决定的,熟悉可以被同时设置,一般会根据外设的功能来决定。
5.蓝牙ota DFU。
蓝牙ota,DFU(Device Firmware Update)指的是蓝牙设备的固件升级,其实是一整套流程,不同的蓝牙芯片,ota的流程有不同之处,我这里用ti的芯片举例。步骤为:切系统(bootloader mode),重启,传输数据,验证数据,切系统,重启,完成。
其中数据传输也会分成很多节去发送,没法送一段数据,做一次数据校验。
6.ota存在的问题。
每个智能设备的速率,功耗,存储都会有很多限制,导致很多设备会自己去实现ota的功能,自定义流程和数据传输方式,导致许多设备都是有自己私有的ota模式和协议,所以在做开发的时候,要仔细阅读设备协议中对ota的描述。
7.如何做自动重连。
只需要在设备断开连接的委托方法中,重新调用gatt.connet或者是centralManager.connet方法就可以了,无论当时设备是否有点,是否在周围,当设备再次开会或者连接到可连接范围内,都会自动被连上。
8.连接失败处理。
分两个平台来说,iOS端也有连接失败的委托,但是好像几乎不会发生这种情况,而对于同款设备,android常常会出现连接失败的情况,status != BluetoothGatt.GATT_SUCCESS,android端开发请不要把连接失败和断开连接放在一块处理,因为断开连接可以直接尝试重新连接,而连接失败后尝试重新连接,需要加一些延时,并且需要gatt.close,清空一下状态,否则会把gatt阻塞导致手机不重启蓝牙就再也无法连接任何设备的情况 。
9.后台运行。
iOS后来运行,需要设备中info.Plist权限,key:Required background modes ,value: bluetooth-central(手机作为central) , bluetooth-peripheral。
10.同时连接多个设备。
使用同一个CBCentralManager,通过进入委托的peripheral的identifier区分不同的设备,进行不同的操作和处理。
11.扫描广播包。
所有外设,只有在发出广播包的情况下,才能被central发现,绝大多数情况下,外设被连接后就不会发出广播(也有例外),很多人遇到无法找到设备的问题,大多属于这种情况。
12.提高蓝牙连接速度。
无论是iOS,还是android,都可以通过已绑定的设备,在不开启扫描的情况下进行快速连接,iOS需要的参数是peripheral的identifier,android需要mac地址。但android和iOS还是有一些区别的,比如iOS不能拿到已绑定的设备list,但是可以通过UUID去拿到peripheral的实例。而android可以拿到已绑定的设备list。android绑定过程需要手动调用createBond的方法,而iOS在连接成功一次后会自动绑定。 android在处理createBond时,常常会应为不同手机平台,不同设备,会产生兼容性的问题,这点需要注意。
13.定向扫描。
在扫描时候可以传入serviceUUID,这样可以扫描到特定条件的设备,提高扫描的速度,排除干扰。
14.如何获取mac地址。
而iOS出于苹果的安全策略问题,无法直接获得mac地址,只能得到一个mac地址换算出来的identifier。
该框架框架包含视频相关的APIs和音频相关的APIs。
针对音频及视频,其主要提供的功能可以归纳为4各方面:
1)、Capture
音频、视频、图像媒体的捕捉,并输出我们可用的数据对象的过程。
2)、Edit
针对现有的媒体片段(音频片段或视频片段),重新创建Assets,重新加工、生成新的媒体片段。例如,Reading, Writing, Reencoding Assets, Thumbnails
3)、Export
提供导出音视频的API。例如,修改文件格式、消减时长等。
4)、Presentation
例如,播放、音视频的预览
设备的输入源主要包括:麦克风(Microphone),摄像头(Camera),屏幕等
输入源一般包括:AVCaptureVideoPreviewLayer,AVCaptureAudioPreviewOutput,文件、Raw Buffer等。
从一个设备,例如照相机或者麦克风管理捕获,组合对象来表示输入和输出,并使用 AVCaptureSession 的实例来协调它们之间的数据流。
一个简单的会话协调:
AVCapture Session作为整个Capture的核心,不断从输入源获取数据,然后分发给各个输出源,从而完成一次简单的会话。
AVCaptureSession参数配置
开始会话
结束会话
然而,很多情况下,需要考虑多个输入源是如何被表示以及如何连接到输出。
输入源有自己的硬件参数可以设置流控,输出源作为一个被动接受对象,它并没有太多流控设置,所以苹果巧妙的引入AVCaptureConnections。每个Output与Session建立连接后,都会分配一个默认的AVCpatureConnection。
AVCaptureConnections就是Session和Output中间的控制节点。很多实时数据,也都是从connection得到的。
输入设备的配置
输出的配置
接收输出资源
1)、视频
2)、照片输出
《Java从小白到大牛》(关东升)电子书网盘下载免费在线阅读
链接:
密码:9h6b
书名:Java从小白到大牛
作者:关东升
豆瓣评分:7.8
出版社:清华大学出版社
出版年份:2018-5-1
页数:528
内容简介:
本书是一部系统论述Java编程语言与编程方法的立体化教程(含纸质图书、电子书、教学课件、源代码与视频教程)。全书共分为四篇:*篇为Java基础(第1章~第10章),第二篇为面向对象编程(第11章~第18章),第三篇为Java进阶(第19章~第28章),第四篇为Java项目实战(第29章~第30章)。书中主要内容包括:开篇综述;开发环境搭建;*个Java程序;Java语法基础;Java编码规范;数据类型;运算符;控制语句;数组;字符串;面向对象基础;对象;继承与多态;抽象类与接口;枚举类;Java常用类;内部类;Java 8函数式编程基础——Lambda表达式;异常处理;对象容器——集合;泛型;文件管理与IO流;多线程编程;网络编程;Swing图形用户界面编程;反射;注解;数据库编程。全书*后还给出了两个实战项目——项目实战1:开发PetStore宠物商店项目;项目实战2:开发Java版QQ2006聊天工具。
为便于读者高效学习,快速掌握Java编程方法。本书作者精心制作了电子书、完整的教学课件、完整的源代码与丰富的配套视频教程(超过2800分钟)以及在线答疑服务等内容。
作者简介:
关东升:一个在IT领域摸爬滚打20多年的老程序员、培训师、作者。精通多种IT技术。参与设计和开发北京市公交一卡通大型项目,开发国家农产品追溯系统、金融系统微博等移动客户端项目,并在App Store发布多款游戏和应用软件。 近期为中国移动、中国联通、南方航空、中石油、工商银行、平安银行和天津港务局等企事业单位授课。著有《iOS开发指南》《从零开始学Swift》《Android网络游戏开发实战》《Cocos2d-x实战》系列和《JSP网络程序设计》等40多本计算机书籍。