`
sabolasi
  • 浏览: 910965 次
文章分类
社区版块
存档分类
最新评论

[转]IPhone开发经验教训总结

 
阅读更多

IPhone开发经验教训总结

This entry was posted byYongon 星期五, 3 九月, 2010 at

  1. 所有的UI操作,都要切换到主线程中进行.否则,会发生莫名其妙的错误.
  2. 在主线程中,runloop默认是开启状态的。非主线程中,如果要用到runloop,必须手动开启runloop。关于runloop知识。
  3. 对于常见的EXEC_BAD_ACCESS,EXC_BAD_INSTRUCTION,错误,一般都是因为访问已经被release的对象造成的。尤其是在一个线程中访问另外一个线程的autorelease库中的对象,尤其要注意此类问题。
  4. 严格遵守iphone 内存管理手册,对于不是由你创建的对象,不要越权release,否则,可能会导致程序crash.有时,一些看起来非常严重的bug,在经过N过次努力,多种思路尝试fix之后,再回头分析bug产生的原因,你会发现,造成这个严重bug的原因,很可能是你违反了一个众所周知的规则引起的.这个规则你非常清楚,熟悉,但就是在coding的时候,稍不留神违反了它.于是就带来了灾难性后果.
  5. 除了面向对象的cocoa外,iphone编程不要忘记非面向对象的Core Foundation。 面向对象库里很多没有的功能,可以尝试在Core Foundation里找找。披如:RSA算法,MD5算法,SHA1算法,AES加密算法等,cocoa对象库里并没有相应的实现,但在core foundation里,均有相应的实现。NSString类里没有的字符串编码GBK,GB2312,GB18030等,在CoreFoundation里,能找到相应的编码。建立socket连接,获得输入流和输出流时,也需要使用Core Foundation里的CFNetwork api。等等。
  6. 通过设置NSZombieEnabled参数,有非常有效帮助解决内存释放错误。
  7. 在消除某个对象时,如果为该对象设置了delegate,则需要先将delegate设成nil,这是一种良好的代码习惯。
  8. 在3.0 的Simulator上使用Instruments 检测内存泄漏时,无法看到函数名,只能看到一些地址指针.在3.1,3.1.2,3.1.3的simulator都正常,能够正常地看到是在哪个函数中存在的内存泄漏.
  9. 通过Nib文件加载viewcontroller的各种UI控件时时,在viewDidLoad函数里,viewController的控件才能使用。在viewcontroller的构造函数里,nib里的控件都还没有完成链接构造呢。
  10. iPhone程序崩溃不要着急。可以结合使用Console和objc_exception_throw可以快速定位根源所在。
  11. 在CFNetwork中,有时候使用CFWriteStreamWrite方法写数据时,会导致该现成被长久block住。原因:在CFWriteStream不能接受数据时,写数据了。具体解决办法:在CFSriteStream收到异步的kCFStreamEventCanAcceptBytes通知时,再开始写数据。此时可避免CFWriteStreamWrite导致线程被block的情形。
  12. 使用Eavesdrop 抓取网络数据包。
  13. 在Iphone上有两种读取图片数据的简单方法: UIImageJPEGRepresentation和UIImagePNGRepresentation. UIImageJPEGRepresentation函数需要两个参数:图片的引用和压缩系数.而UIImagePNGRepresentation只需要图片引用作为参数.通过在实际使用过程中,比较发现: UIImagePNGRepresentation(UIImage* image) 要比UIImageJPEGRepresentation(UIImage* image, 1.0) 返回的图片数据量大很多.譬如,同样是读取摄像头拍摄的同样景色的照片, UIImagePNGRepresentation()返回的数据量大小为199K ,而 UIImageJPEGRepresentation(UIImage* image, 1.0)返回的数据量大小只为140KB,比前者少了50多KB.如果对图片的清晰度要求不高,还可以通过设置 UIImageJPEGRepresentation函数的第二个参数,大幅度降低图片数据量.譬如,刚才拍摄的图片, 通过调用UIImageJPEGRepresentation(UIImage* image, 1.0)读取数据时,返回的数据大小为140KB,但更改压缩系数后,通过调用UIImageJPEGRepresentation(UIImage* image, 0.5)读取数据时,返回的数据大小只有11KB多,大大压缩了图片的数据量 ,而且从视角角度看,图片的质量并没有明显的降低.因此,在读取图片数据内容时,建议优先使用UIImageJPEGRepresentation,并可根据自己的实际使用场景,设置压缩系数,进一步降低图片数据量大小.

原文地址:http://www.cocoaforever.com/?p=21

分享到:
评论

相关推荐

    iPhone开发实战.pdf

    iPhone开发实战 iPhone开发 iPhone iPhone4 iPhone开发实战 iPhone开发 iPhone iPhone4

    Iphone开发系列源码——Iphone主题源码

    Iphone开发系列源码——Iphone主题源码Iphone开发系列源码——Iphone主题源码Iphone开发系列源码——Iphone主题源码Iphone开发系列源码——Iphone主题源码Iphone开发系列源码——Iphone主题源码Iphone开发系列源码...

    iPhone开发基础教程电子书

    这里推荐两本书《objective-c基础教程》和《iphone开发基础教程》,这两本都是圣经级的巨作,我相信每一个iphone开发人员应该都不会错过这两本书的。  等你xcode和objective-c摸熟之后,或者说,上面提到的那两...

    iphone创意开发入门与实践总结

    iphone创意开发入门与实践总结

    Iphone开发系列源码——iPhone版Wordpress源代码

    Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码...

    Iphone开发系列源码——Image图片缩放随着手指

    Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image...

    iPhone Safari Web开发经验

    iPhone Safari Web开发经验

    iPhone开发基础教程-PDF版

    iPhone开发,iPhone开发教程,iPhone开发基础教程PDF版

    iPhone开发基础教程

    《iPhone开发基础教程》内容完整丰富,具有较强的通用性,编程领域中各层次读者都能通过《iPhone开发基础教程》快速学习iPhone开发,提高相关技能。iPhone 是一种全新的移动平台,苹果公司为它推出了强大的软件开发...

    iPhone开发入门到精通视频教程

    资源名称:iPhone开发入门到精通视频教程资源目录:【】iOS开发源码系列---工具【】iOS开发源码系列---应用【】iOS开发源码系列---游戏【】iOS开发源码系列---类库与框架【】iOS开发真机测试与发布【】iOS开发视频...

    轻松学iPhone开发

    轻松学iPhone共分3篇。第1篇介绍iPhone的发展、iPhone开发环境以及开发工具的安装过程、iPhone Simulator模拟器

    iphone开发实战

    本书全面探讨了iPhone平台的两种编程方式——Web开发和SDK编程。全在Web开发方面,分别介绍了三个iPhone Web库,即WebKit、iUI和Canvas,并讨论了Web开发环境Dashcode,最后阐述... 本书适合所有iPhone开发人员学习参考

    iPhone游戏开发

    iPhone游戏开发iPhone游戏开发iPhone游戏开发iPhone游戏开发iPhone游戏开发iPhone游戏开发iPhone游戏开发iPhone游戏开发iPhone游戏开发iPhone游戏开发

    IPhone开发

    iphone开发秘籍,移动手机开发,参照软件开发应用

    深入浅出iPhone开发(清晰版,内含中英2个版本的书)

    知名的Head First系列丛书之一,风格与其他Head First系列一脉相承,一定能让读者轻松学会iPhone开发,《深入浅出iPhone开发》是针对iPhone开发的初学者设计的,以几个应用实例的开发为例,循序渐进地对iPhone开发的...

    iPhone3开发基础教程

    这是一本很不错的iphone开发入门级教程

    Iphone开发系列源码——多功能播放器源码

    Iphone开发系列源码——多功能播放器源码Iphone开发系列源码——多功能播放器源码Iphone开发系列源码——多功能播放器源码Iphone开发系列源码——多功能播放器源码Iphone开发系列源码——多功能播放器源码Iphone开发...

    iPhone开发实战

    iPhone开发实战

    深入浅出iPhone开发

    《深入浅出iPhone开发》,本书是针对iPhone开发的初学者设计的,以几个应用实例的开发为例,循序渐进地对iPhone开发的各个方面进行了讲解。

    iphone开发经验

    iphone 开发 经验分享 视频 iphone开发的语言是 objectives-C 简称objc

Global site tag (gtag.js) - Google Analytics