zoukankan      html  css  js  c++  java
  • 编程错误总结(一)

    各种IOS开发经验教训总结

    1、所有的UI操作,都要切换到主线程中进行.否则,会发生莫名其妙的错误.

    2、在主线程中,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里,均有相应的实现。

    6、NSString类里没有的字符串编码GBK,GB2312,GB18030等,在CoreFoundation里,能找到相应的编码。建立socket连接,获得输入流和输出流时,也需要使用Core Foundation里的CFNetwork api。等等。

    7、通过设置NSZombieEnabled参数,有非常有效帮助解决内存释放错误。

    在消除某个对象时,如果为该对象设置了delegate,则需要先将delegate设成nil,这是一种良好的代码习惯。

    8、在3.0 的Simulator上使用Instruments 检测内存泄漏时,无法看到函数名,只能看到一些地址指针.在3.1,3.1.2,3.1.3的simulator都正常,能够正常地看到是在哪个函数中存在的内存泄漏.

    通过Nib文件加载viewcontroller的各种UI控件时时,在viewDidLoad函数里,viewController的控件才能使用。在viewcontroller的构造函数里,nib里的控件都还没有完成链接构造呢。

    9、iPhone程序崩溃不要着急。可以结合使用Console和objc_exception_throw可以快速定位根源所在。

  • 相关阅读:
    《趣谈网络协议》(刘超老师)读后笔记记录 001
    jenkins安装配置
    Linux 磁盘分区,挂载以及格式化
    Linux三剑客之awk
    Linux三剑客之sed
    Linux-三剑客之grep
    date那些事儿
    zookeeper集群的搭建以及命令详解
    Java多线程
    mybatis获取自增主键
  • 原文地址:https://www.cnblogs.com/hytx/p/5049355.html
Copyright © 2011-2022 走看看