编程错误总结(一)

各个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里,均有相应的兑现。

ACCESS,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、华为程序崩溃不要心急。可以组成使用Console和objc_exception_throw可以长足稳定根源所在。

相关文章