Я недавно испытывал утечку памяти при профилировании инструментами.Утечка памяти при подклассификации пользовательского UIViewController
Итак, у меня есть родительский AVC, который наследуется от UIViewController и подкласса AVC, называемого BVC. этот BVC имеет экземпляр класса-помощника, который инициализируется в viewDidLoad. Ну, инструменты утверждают, что есть утечка памяти на viewDidLoad.
Вот пример кода, я использовал, чтобы воспроизвести проблему. Странно, если «a» является членом AVC и инициализируется в BVC «A», он не течет.
import UIKit
class A
{
}
class AVC: UIViewController
{
override func viewDidLoad()
{
super.viewDidLoad()
}
}
class BVC: AVC
{
var a: A!
override func viewDidLoad()
{
super.viewDidLoad()
a = A()
}
}
Таким образом, вопрос, почему «а» утечки, когда он является экземпляром BVC и не AVC? Кроме того, в обоих случаях выполняется захват графика памяти.
Благодаря
Это совсем не так и не отвечает на вопрос. Более того, в моем фактическом приложении «a» никогда не должно быть nil, и я не могу его инициализировать непосредственно в той же строке, что и объявлено, поэтому элегантным решением является принудительное разворот, это одно из фактических применений развертывания силы. –