42、利用工具发现瓶颈及异步编程优化

利用工具发现瓶颈及异步编程优化

1. 打破引用循环

在开发中,引用循环是一个常见的问题,它可能导致内存泄漏。为了打破引用循环,可以将委托标记为弱引用。当把委托标记为弱引用时,引用就不再是强引用,这本质上告诉应用程序,被引用的对象被释放是可以接受的。

同时,必须将 CollectionItemDelegate 协议限制为仅类实例。由于值类型(如结构体)的性质,不能将对它们的引用标记为弱引用,而协议可以被值类型和引用类型采用,所以该协议必须仅限制为类实例。更新 CollectionItemDelegate 协议的声明如下:

protocol CollectionItemDelegate: class

运行应用程序后,使用内存调试器和 Instruments 工具可以证明应用程序中不再有引用循环。虽然 Instruments 可能仍显示内存使用量在增加,但只要确保代码安全且不再使用的内存可以被释放,就无需过于担心。

为避免委托中的引用循环,常见的做法是默认将所有委托设置为弱引用,这可以防止出现不易察觉的错误,通常是最安全的做法。但要注意,引用循环的出现方式有很多种,应始终使用适当的工具来排查内存问题。

2. 添加符号日志

2.1 符号日志的作用

作为开发者,我们希望确切了解应用程序的运行情况以及在某些代码部分花费的时间。传统上,使用断点或打印语句进行基本调试或日志记录,但在控制台中跟踪大量打印语句很繁琐。

在 iOS 12

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值