1. MRC下访问一个已经释放的对象
解决:
- 使用前判断是否非空
- 释放后置为nil
- 合理使用autoreleasePool
2. 数组越界
解决:注意检查下标
3.为集合插入空对象
解决:插入前先判断是否非空
4. 访问了不存在的方法(通常出现在使用delegate时,delegate为id类型,不报错)
解决:使用方法前,用respondsToSelector检验
5. 堆栈溢出(过多递归导致堆栈溢出;过多alloc导致堆栈溢出)
解决:优化递归代码;合理分配对象
6. Repeating NSTimer (非repeat timer 在fired时会自动调用invalidate;repeat timer不会,若释放此timer,timer还会回调,回调时因找不到对象而crash)
解决:对repeat timer 在合适的地方执行invalidate
7. 多线程并发操作(一个线程释放,另一个线程访问)
解决:略