iOS开发错误调适instruments之Zombies的使用(检测僵尸对象)

1. 打开instruments

图片.png

2. 选择zombies

图片.png

3. 点击左上角红点开始运行记录

图片.png

运行后的效果

图片.png

3. 重现错误

在模拟器上操作程序,直到程序崩溃。崩溃时,如果是僵尸对象导致的,instruments的右上角会弹出提示框。

图片.png

提示框

提示框上提示 RechargeViewController有一个僵尸对象,点击最后的箭头即可显示详情。

图片.png

4. 详情列表

点击后出现详情列表,看不懂没关系,直接翻到最后一行

图片.png

5. 错误定位

最后一行,zombie 可以看到是SKProductsRequest,原来是内购的商品请求成为僵尸对象了。在充值界面内购请求商品,但是返回的时候,RechargeViewController被销毁,SKProductsRequest却没有释放。回到内购代码那里修改一下即可。

图片.png

代码修改如下

- (void)dealloc{
    NSLog(@"销毁");
    self.request.delegate = nil;
    [self.request cancel];
    self.request = nil;
}

错误总结:一般导致僵尸对象的原因都是通知,观察者在需要移除的地方没有移除,发现错误位置后,查找一下当前页面的通知和观察者,没移除的要移除。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容