OSC 第 71 期高手问答 — iOS 开发和崩溃优化

叶秀兰 发布于 2015/05/06 07:51
阅读 4K+
收藏 9

OSCHINA 本期高手问答(5月6日- 5月12日)我们请来了 @MaximLi李民湘)为大家解答关于 iOS 开发和崩溃优化方面的问题。

李民湘,现 Testin 云测 iOS 高级研发工程师,擅长 Windows mobile, Symbian,QT,iOS 等多个平台程序开发。 7 年 iOS 开发经验。曾开发有著名产品 A4 输入法,QQ 输入法,获得多项技术大奖。

高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就 iOS 开发和崩溃优化 方面问题向@MaximLi 提问,请直接回帖提问。

加载中
0
blu10ph
blu10ph
A4输入法!大神请收下我的膝盖!顺便请教下对于界面部分怎么进行自动化测试?~
MaximLi
MaximLi
回复 @blu10ph : 谢谢,谢谢支持。
blu10ph
blu10ph
回复 @MaximLi : 多谢大神的指点,之前用wm的A4输入法感觉太好用了,绝对是下了苦心的作品,没想到在开源中国遇到了作者~
MaximLi
MaximLi
界面部分自动测试确实没有更好的办法,一个是自己写测试工具,第二个就是用系统工具,就看你需要哪些方面的数据。
MaximLi
MaximLi
膝盖实在是不敢收,呵呵
0
吕少尘
吕少尘
@MaximLi :大神通常是怎么着手处理崩溃问题的?
foobra
foobra
回复 @MaximLi : OC不鼓励使用try catch嘛, 请问什么情况下是OC使用try catch的最佳实践
MaximLi
MaximLi
处理崩溃的最好的方式是尽量让程序少崩溃,或者不崩溃,大部分的崩溃是内存引起的,这就需要在平时开发过程中,对内存管理上多下点功夫。比如捕获异常是一种办法,另外就是用系统提供的工具测试。还有就是用第三方工具,比如崩溃大师。
0
小杨阿哥哥
小杨阿哥哥
@MaximLi :IOS开发是否必须要用mac,普通的电脑上装个mac os x 做开发是否能行、不至于几天装一次系统吧 
MaximLi
MaximLi
用pc也可以,但是会比较折腾。mac mini也是个不错的选择,一般程序开发是可以满足需求的。
Jasper
Jasper
开发ios建议买台mac,mac mini是最便宜的,配个显示器和鼠标就可以了,比较实惠;imac屏幕大,编程最适合,鼠标,键盘都自带,配合系统最完美了。mac book 适合携带吧,pro的价格有点高。另外最好有个iphone,便于真机测试了。
0
w
wppiwyye
@MaximLi :iOS的基础打好之后,想继续进阶的话该怎么发展。像Android有系统源码可以深入的向底层学习,iOS有没有一个比较清晰靠谱的技术成长路线。
haojianyun
haojianyun
回复 @MaximLi : 谢谢,我也在这一步卡的了
MaximLi
MaximLi
其实无论是iOS也好,Android也好,最终我们要面对的是如何解决各种问题,每个人在处理同一个问题的方式,方法是不一样的。可以看看很多流行的开源框架,看下他们解决问题的方式,或者回头看下自己曾经做过的项目,都会有不同的理解,我想,这应该都是一种提高的方式。
0
tianyuanzhonglu
tianyuanzhonglu
@MaximLi :请问,app store提交应用时提示不能使用友盟ios sdk,怎么做自己的crash repotr library?
tianyuanzhonglu
tianyuanzhonglu
回复 @MaximLi : 谢谢。除了第三方的statistics/crash report library,如果自己实现,有开源的例子可以参考吗?
MaximLi
MaximLi
一个是用Exception捕获异常,另外就是捕获信号,获取堆栈信息,需要想一下这些信息用什么方式传递给你。
0
本是天上逍遥的仙
本是天上逍遥的仙

@MaximLi :现在入门ios,是从swift开始学,还是oc。好多人建议不用storyboard开发,不知道为啥,,

MaximLi
MaximLi
如果你有c或者c++的基础的话,objec c会容易上手,如果有java或其他脚本语言基础的话swift会容易些,不用storyboard的一个原因是比较占资源,另外就是多人协同开发时不是很顺畅,如果个人开发的话,我觉得就无所谓了,毕竟适配不同分辨率时还是很方便的。
0
铂金小狼
铂金小狼

@MaximLi :请教如果现在想开发ios,是直接swift还是oc?

铂金小狼
铂金小狼
@MaximLi 好的,谢谢
MaximLi
MaximLi
现在就swift吧,苹果主推,是趋势。
0
foobra
foobra

@MaximLi : 我的应用里面有很多UIKit的崩溃, 完全没头绪是哪里崩溃的.比如这个地方崩溃

[UIApplication sendAction:to:from:forEvent:]

崩溃堆栈全部都是UIKit, 没有一行是我自己的代码, 请问这种怎么定位

foobra
foobra
回复 @MaximLi : 已经上线的应用, 在crashlytics里面看到的. 就是不知道用户的场景, 想问问你遇到过这种情况没, 应该怎么处理
MaximLi
MaximLi
是在什么场景下崩溃的?如果实在没有头绪的话,建议你采用分段排除法,排查下。
0
foobra
foobra

@MaximLi : 还有一个问题, 有很多Cocoa API, 参数不允许传递为nil ,文档里面也没说, 但是一旦传递nil就崩溃, 这样的情况我怎么知道哪些接口不能传递nil. 比如这个接口:

NSRegularExpression中的 - matchesInString:options:range:
第一个参数就不能传递nil, 但是文档里面没写, 头文件里面也没写.我在开发的时候怎么才能注意到这点呢    


MaximLi
MaximLi
通常容器类中不能传入nil对象,String对象为空时最好使用@“”,另外文档中有说明的。比如容器类中:The object to add to the end of the array’s content. This value must not be nil.
0
番却将
番却将
@MaximLi:请问目前开发新项目如何在oc和swift中选择呢?
MaximLi
MaximLi
现在入门的话,就直接swift吧。
返回顶部
顶部