OSCHINA 第 76 期高手问答 ( 5月27日- 6月2日) 我们请来了@智捷课堂 (关东升)为大家解答关于 iOS 性能优化和数据持久化 方面的问题。
原文地址:http://www.oschina.net/question/865233_237559
关东升,智捷课堂创始人,国内知名 iOS 技术作家,iOS 技术顾问,高级培训讲师,移动开发专家。曾先后主持开发大型网络游戏《神农诀》的 iOS 和 Android 客户端开发,国家农产品追溯系统的 iPad 客户端开发,酒店预订系统的 iPhone 客户端开发,金融系统微博的 iOS、 Windows Phone 及 Android 客户端开发。在 App Store 上发布多款游戏和应用软件,擅长移动平台的应用和游戏类项目开发。
《iOS开发指南 从零基础到App Store上架(第3版)》以 Swift 和 Objective-C 语言为基础进行讲解,全面涵盖 iOS 8 新特性、新变化;数百个项目案例+两个真实项目开发全过程;涵盖 iOS 平台架构设计、测试驱动开发、性能优化、版本控制和程序调试等。
@puras:关老师您好,有幸听过两次您的培训,虽然是公司组织的,但收获还是不错的。
只是从培训与看书得来的知识,在应用的实践时,总会有这样或那样的问题,多数还是来源于以前Java的经验,相对于iOS特有的东西,了解的还是不多。
在针对性能优化方面,想要进一步提高,有哪些方面是需要了解的呢?
写过几个iOS应用,都是使用的SQLite,现在Core Data用的多么?
还有就是Swift每个版本发布,都会有些不兼容的特性,现在使用Swift开发App,在Swift升级时,实际上遇到的需要修改的问题多么?也就是说现在是否适合全面切换到Swift上去呢?
再次感谢!
@智捷课堂:在开发实际项目时候一定会遇到这样那样的问题。在性能优化方面:内存、数据结构、IO操作等很多方面,这本书的第20章就是介绍这个的。 CoreData要看个人情况,我是从数据库做起的我还是觉得SQLite比较灵活。
Swift版本之间是有不兼容的问题,特别是Swift1.2新版本,真正能全面使用Swift要看企业自身的情况,如果企业已经有一个老的版本OC还是优先考虑,如果是新的系统Swift可以考虑。
@LeoMin:老师你好,非常喜欢你的书,swift入门读物就是你那本《Swift开发指南》,非常期待后续的更新。
第一个问题,关于数据持久化方面的。
对于数据的持久化存储,ios中一般提供了4种不同的机制。属性列表、对象归档、SQLite3、Core Data,请问现在的应用中,哪种机制的出镜率较高那?那种又是必须掌握的操作存储方法?
第二个问题是关于新书的。
《iOS开发指南 从零基础到App Store上架》这本书的前两版都出了电子书,请问第三版也会出电子版么?
@智捷课堂:第1个问题,如果数据量大一些SQLite3和CoreData新能比较高。 第2个问题,电子版,要等到纸质版上市一段时间再出的。
@水母干:一直以来对即时通讯类的移动应用很感兴趣,想请教几个问题:
1.现在即时通讯类app是用什么样的协议?
2.xmpp协议用在即时通讯app上有什么优缺点?
3.现在运营商对于长期维持的tcp连接还会不会砍掉?
4.即时通讯类app防止耗电过多有都用了什么手段?
@智捷课堂:即时通讯,首先是xmpp了,自己定协议很麻烦。xmpp本身是一种协议,具体要ios需要一些xmpp框架。长期tcp的问题,运营商应该不会做这种无聊的事情。关于耗电问题,可以在app退到后台,断开连接,回到前台重新建立连接,减少轮询等操作。
@愤怒的小兔:看招聘信息上面很少有提到swift的,多是OC,难道大家实际项目中都是有所抵触swift的,真的像一些人说的那样——现在写“HelloWorld”用swift很爽,实际项目还要OC才行?
@智捷课堂:因为有些企业是老项目,OC的比较多,但是未来Swift会是主流,但是这个时间不久长。目前建议OC和Swift都掌握。
@刘利伟:请问老师SWIFT 2.0要出了,您会更新你的书吗?会不会语法变化很大?SWIFT总是改变,现在是否适合应用在产品中呢?
@智捷课堂:一定会更新,但是由于出版周期比较长,我们可以先把书中的案例更新为新版本的,目前这个本书Swift就有两个版本。关于Swift总是在变的问题,我们不用担心,比较变化的只是少的。
@恺哥:由于工作需要,前段时间接触了一下ios开发,由于是刚刚接触,就直接使用swift作为开发语言。因为oc的语法实在是接受不了。但苦于现在 swift的相关ios开发资料较少,比如app中需要扫一扫功能,很难找到可用的现成代码,不像oc,网络上可参考资源较为丰富。基于这一点,有些相对 大型的ios项目,就不太敢用swift。不知道您是否能推荐一些比较好的——关于swift的一些资源库。
根据您经验来看,
swift将来能否成为ios开发的首选语言?
目前市面基于swift开发的成功案例多吗?
如果项目中采用swift作为开发语言,当遇到技术问题时,如果寻找解决办法?
望您在百忙之中给予解答,非常感谢
@智捷课堂:Swift语言未来会替代OC,但是需要过程,目前两种语言都可以开发。Swift语言现在已经有很多应用了,如果想找一些代码可以去github.com找。
@火蚁:嘻嘻,二维码扫描的,我倒是有一个案例,直接用系统提供的库就行了,方便实用,http://git.oschina.net/fireant/Swift_Qr_Scan
@心中彩虹:swift将来能否成为ios开发的首选语言?
@智捷课堂:Swift语言未来会替代OC,但是需要过程,目前两种语言都可以开发。
@mocou:新手学习iOS开发的第一个问题:有没有必要学习OC?直接从swift入手可以吗?
@智捷课堂:没有OC基础,可以学习Swift,Swift上手还是比较容易的。
@小杨阿哥哥:swift 开发的代码比objecttive,编译后更小吗?听说2.0编译能够减小应用的大小。
@智捷课堂:编译之后的二进制文件大小,并不是一个非常重要的参数,而是资源文件大小才是影响应用大小的主要因素。
@Skiychan:看你之前的回复,有点疑问:是先学swift再学oc?为什么?我目前在学oc,还有,听说swift语法目前还不太稳定,比如新版本swift会弃用旧版本的语法,这样学习成本感觉有点高。
@智捷课堂:这样的oc语法完全与我们现在主流的语言(Java等)不同,oc不容易上手,而Swift语法与这些语言非常相似,容易上手。
Swift语法官方是不断在升级,但这不能说明他不稳定。而变化的只是很少一部分。
@阳光真强烈:你好,我去年买了一本精通iOS开发的书,因为当时swift刚出再加上以前学过c感觉OC应该容易入手,但是后来发现自己的学习进度好慢,一本书边看边 做差不多学了一半,现在网上swift相关的资料也多了,遗憾当时没有直接选择swift,不知道swift和OC的差距大吗,以及从OC过渡到 swift的难易度?谢谢!
@智捷课堂:Swift与OC差别很大,Swift更接近现代计算机语言,如Java等,从OC到Swift,方法命名方面有一种对应关系。
@leoxu:老师您好,请问您对React Native有研究吗,这类技术貌似不同于一般的Hybrid模式,您在日常开发中用的比较多的方式是什么?我是初学者,目前还在学习OC基础的阶段,请问使用这类框架是否一定要对基础有一个全面了解才能应用到实际生产开发中?
@智捷课堂:这些框架多变都是界面跨平台问题,但是目前都没有一个非常好的框架出现。本地开发还是主流。
@mystar:能简单比较一下swift和react native么,从学习曲线看,后者应该更简单一点,但是在ios平台上是否已经具备实用性了?
@智捷课堂:react native这一类的东西要慎用,因为他的生命周期都长,都不好说,用户也少。学习还是考虑苹果官方的技术要可靠一些。
@km董董:App开发原生好?还是混合好?
@智捷课堂:原生api可以完成你需要所有功能,而混合的有的功能无法访问。
@机器猫123:老师你好,我读了一篇你的试读章节,很有收获。想请教一个关于本书的问题,关于本书是怎样的一个学习流程,您能大概的介绍一下吗?还有就是你觉得这本书最与众不同的是哪些部分?对于我这个新手来说,有什么建议吗?
@智捷课堂:本书没有介绍基础语言Swift和OC,这需要你有这个基础,本书顺序是UI->界面布局->界面导航->数据持久化->网络通信,然后是高级内容:性能优化、测试驱动、版本管理,这些都是项目开发需要的,最后是APP Stroe上线。
本书的最大特点是介绍了:iOS分层架构设计,整个分层架构贯穿本书。
@Booklearn:现在ios的岗位并不是很多,甚至没有Android程序员多,这是为什么,
@智捷课堂:Android岗位角色不同,有应用开发、框架开发、硬件开发,而这ios只有应用开发。
@Booklearn:我作为一名JAVA程序员,转行开发ios门槛怎么样,有没有什么建议
@智捷课堂:作为java程序员是有面向对象基础的,ios开发采用的计算机语言是OC和Swift,你可以先学Swift,他比较好上手,有些语法类似于java,然后再学OC。
@背着耗子去流浪:IOS工资为什么这么高?
@智捷课堂:iOS工资平均要比传统开发高,具体还要看你的能力。但是移动互联网时代,很多行业都在做app。
@Booklearn:ios一般使用什么数据库比较好,为什么, 新的ios8适合新手学习吗?
@智捷课堂:SQLite数据库,iOS8当然适合了。
@魏武帝:关老师您好,iOS做即时通讯项目时,通常选择什么方式比较好呢,扩展xmpp?socket?还是直接采用第三方通讯框架呢。
基于您的丰富经历,我想请问,每一个语言都有盛衰期,依你看,iOS的火热会持续多久?后面热门的语言的方向会是如何呢?
谢谢您的不吝指教:)
@智捷课堂:xmpp是及时通信协议,它有ios的框架可以使用,socket比较麻烦还有自己定协议。 另外ios不是一种语言,是一个平台,至于他能火多久,要看苹果的发展和移动互联网的发展了。
@DragonFK:老师好,最近正自学中,CoreData是否就像微软的entity framework,Java中的hibernate。都是一种关系型数据的实体框架。
@智捷课堂:CoreData 是主要的一种技术。
@hi_yjs:关老师您好,我想请问一下,在时间iOS开发中,是使用拖控件的方式好,还是纯代码的方式好呢?
@智捷课堂:iOS的界面构成过程中,可以采用三种技术:故事板、xib和纯代码,故事板和xib类似都是通过设计界面,进行可视化设计,使用起来所见即所得比较方便,而纯代码在这方面比较差。
而纯代码也有好处就是可以多人协同开发,构建界面比较灵活,屏幕适配也比较容易,但编写很麻烦,不是所见即所得的。对应原型驱动的开发方法代码方式不适合,而故事板和xib更适合。
@Rayqiu:请问老师,在日常繁忙的开发中,如果做性能的自动化测试,对应用上线时会比较靠谱?
@智捷课堂:自动化测试在目前ios开发用的不是很多,ios有相关的技术UIAutomation,你可以查一下相关资料。
@lx9990999:您好,我是您的忠实读者之一,这书在第二版的基础上更新了什么?我还有必要再买么?
@智捷课堂:谢谢你的支持,第3版是双语言版本,OC和Swift对照,分两栏对照,还有增加了屏幕iOS8适配等。
原文地址:http://www.oschina.net/question/865233_237559