ios try Catch的坑

try catch语法:

@try {
    //执行的代码
}
@catch {
  //发生异常后执行的代码
}
@finally {
  //一定会执行的代码
}

遇到的坑
当try的代码发生异常后,有可能会发生内存泄漏

测试代码

ios try Catch的坑_第1张图片
image.png

开始测试流程:

建立一个测试类

ios try Catch的坑_第2张图片
image.png

案例1:block引用了self,发生异常self会无法释放

ios try Catch的坑_第3张图片
image.png

解决方案:使用weak可以解决

ios try Catch的坑_第4张图片
image.png

案例2:临时变量引用的控制器无法释放

image.png
ios try Catch的坑_第5张图片
image.png

原因:因为临时变量temp无法释放,所以temp引用的self也无法释放
解决方案1:用weak引用self,self可以释放,但是临时变量temp依然无法释放
解决方案2:需要使用者对对象手动释放

ios try Catch的坑_第6张图片
image.png

你可能感兴趣的:(ios try Catch的坑)