工作中经常会遇到一些Bug,时间长了有时候就忘记了,这样不好。
特地在这加一个随笔,把以后出现的有价值一点的bug记录在这里,提醒自己,也可以给刚入门的同学一些参考,避免这些坑。
1:界面已经销毁,代理回调会导致崩溃的bug
场景: A Push to B
在B中发送了一个异步请求,请求完成之后执行
if(self.delegate && [self.delegate respondsToSelector:@selector(requestMessageFinish:)])
{
[self.delegate requestMessageFinish:self.countDic];
}
在请求完成之前,就Pop到了A,等到请求完成之后,执行代理回调的时候,此时代理已经是僵尸对象了,导致崩溃。
解决: 在B viewDidDisappear的方法里,将delegate = nil即可避免。
2:断点调试时,打印变量控制台出现“no location, value may have been optimized out”或者“variable not available”
解决: 选择Product-->Scheme-->Edit Scheme-->Run
如下图,将Build Configuration改为Debug模式。
原因: Xcode默认有2个编译模式,一个是Debug,一个是Release。Release下不能调试程序,编译时有做编译优化,会比用Debug打包出来的运行快,另外包也会更小。