盐城经济技术开发区建设局网站,重庆网站seo方法,做app布局参考哪个网站,常用网站建设技术SWIFT中最常见的内存泄漏陷阱
如果您有内存循环#xff0c;它将在调试器中向您显示警告#xff1a;
如果确实有一个#xff08;或通常是一堆#xff09;#xff0c;则表示您有一个泄漏的物体。
您如何预防呢#xff1f;
就像在关闭的第一行中添加[unowned self]一样简…SWIFT中最常见的内存泄漏陷阱
如果您有内存循环它将在调试器中向您显示警告
如果确实有一个或通常是一堆则表示您有一个泄漏的物体。
您如何预防呢
就像在关闭的第一行中添加[unowned self]一样简单
而已 它将阻止泄漏。
之所以会发生内存泄漏是因为Swift中的闭包必须捕获作用域即{}之间的所有东西以及您引用的任何self. 它必须保留指向该对象的强大指针并且即使整个viewController可能已被释放也永远不会释放它。
[unowned self]是您在Swift闭包中的朋友
更新正如中型读者所指出的那样也可以使用[weak self]代替[unowned self] 这也将阻止泄漏 。 但是Tudor Andrei Marinescu指出了一些重要的考虑因素 unowned和weak之间的区别在于 weak被声明为可选 unowned则不是。 通过声明它是weak您可以处理某些情况下它在闭包内部可能为零的情况。 如果您尝试访问一个恰好为nil的unowned变量它将使整个程序崩溃。 因此只有当您肯定变量在闭包周围时将始终存在时才使用unowned