Сторибордът се развива, причинявайки изтичане на памет

Имам два UIViewControllers с бутони, задействащи segue (модално) един към друг. Исках да открия дали това причинява изтичане на памет, докато скача напред-назад и виждам, че разпределената памет на Living Object && се увеличава, което в крайна сметка ще доведе до срив на приложението. Нямам нито един ред код - работя с чисти UIViewControllers. storyboard

профил 1

профил 2настройки на проекта

Какво може да правя погрешно?
Възможно ли е да съм задал нещо грешно в настройките на проекта?
Лошо ли чета статистиката на профайлъра?
Трябва ли да правя някакви специални команди за освобождаване, докато работя със сегите?


person Piotr    schedule 28.10.2012    source източник


Отговори (1)


Не използвате правилно модалните последователности. Начинът, по който сте го внедрили, вие създавате нов екземпляр на всеки контролер на изглед, когато преминавате, вместо да се връщате към екземпляра, от който сте дошли. Ето защо използването на вашата памет продължава да се увеличава.

Преди iOS 6, правилният начин да се справите с това беше да:

1) дефинирайте метод като viewController2Done в контролер за изглед 1
2) в контролер за изглед 2, създайте свойство, наречено delegate от тип id.
3) в prepareToSegue за контролер за изглед 1, задайте delegate в контролер за изглед 2 на self
4) в изглед контролер 2, когато е време да се върнете към изглед контролер 1, извикайте [delegate viewController2Done]
5) в viewController2Done извикайте [self dismissModalViewControllerAnimated:YES]

Този метод все още работи в iOS 6, но има и нов unwind segue, който може да се използва вместо него. За да го използвате, трябва да дефинирате метод във вашия изглед контролер 1 така:

Цел-C:

- (IBAction)unwindFromViewController2:(UIStoryboardSegue *)segue
{
    NSLog(@"and we are back");
}

Swift:

@IBAction func unwindFromViewController2(_ segue: UIStoryboardSegue) {
    print("and we are back")
}

След това бихте контролирали плъзгането от бутона в контролера за изглед 2 до оранжевата икона за изход в лентата над контролера за изглед в Storyboard. В изскачащия прозорец ще изберете unwindFromViewController2 и готово.

въведете описание на изображението тук

person vacawama    schedule 28.10.2012