利用工具发现瓶颈及异步编程优化
1. 打破引用循环
在开发中,引用循环是一个常见的问题,它可能导致内存泄漏。为了打破引用循环,可以将委托标记为弱引用。当把委托标记为弱引用时,引用就不再是强引用,这本质上告诉应用程序,被引用的对象被释放是可以接受的。
同时,必须将 CollectionItemDelegate 协议限制为仅类实例。由于值类型(如结构体)的性质,不能将对它们的引用标记为弱引用,而协议可以被值类型和引用类型采用,所以该协议必须仅限制为类实例。更新 CollectionItemDelegate 协议的声明如下:
protocol CollectionItemDelegate: class
运行应用程序后,使用内存调试器和 Instruments 工具可以证明应用程序中不再有引用循环。虽然 Instruments 可能仍显示内存使用量在增加,但只要确保代码安全且不再使用的内存可以被释放,就无需过于担心。
为避免委托中的引用循环,常见的做法是默认将所有委托设置为弱引用,这可以防止出现不易察觉的错误,通常是最安全的做法。但要注意,引用循环的出现方式有很多种,应始终使用适当的工具来排查内存问题。
2. 添加符号日志
2.1 符号日志的作用
作为开发者,我们希望确切了解应用程序的运行情况以及在某些代码部分花费的时间。传统上,使用断点或打印语句进行基本调试或日志记录,但在控制台中跟踪大量打印语句很繁琐。
在 iOS 12
超级会员免费看
订阅专栏 解锁全文
173万+

被折叠的 条评论
为什么被折叠?



