ACCESSIPhone 开发经验教训总结 — 仅供参考 (转载)

IPhone 开发经验教训总计 —  仅供参考   

  1. 拥有的UI操作,都要切换至主线程遭受开展.否则,会来莫名其妙的错误.
  2. 在主线程中,runloop默认是被状态的。非主线程中,如若要就此到runloop,必须手动开启runloop。关于runloop知识。
  3. 对普遍的EXEC_BAD_ACCESS,EXC_ACCESS,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.  三星程序崩溃不要着急。可以组成使用Console和objc_exception_throw可以飞快稳定来所在。

  11. CFNetwork中,有时候用CFWriteStreamWrite方法勾勒多少经常,会招该现成被长久block住。原因:在
    CFWriteStream不可能经受多少通常,写多少了。具体解决办法:在CFSriteStream收到异步的
    kCFStream伊夫(Eve)ntCanAcceptBytes通知时,再开端写多少。此时可是免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,并而
    遵照自己的实际用境况,设置压缩系数,进一步下降图片数据量大小.

相关文章