一、访问了一个已经被释放的对象:nil,autorelease
二、访问数组类对象越界或插入了空对象:分类或者runtime替换
三、访问了不存在的方法:判断是否有,runtime修改
四、字节对齐:使用 memcpy 来作内存拷贝,而不是直接对指针赋值
五、堆栈溢出(过多的递归会导致栈溢出,过多的 alloc 变量会导致堆溢出。)
六、多线程并发操作:加锁 ,原子,Operation Objects, GCD, Idle-time notifications, Asynchronous functions, Timers, Separate processes。
七、Repeating NSTimer:写了个宏用来释放Timer