2013-07-28 2 views
0

Я использовал несколько UIStoryboard в своем приложении, но обнаружил, что когда я сменил раскадровку, старый не выпустил, как выпустить старый? следующий код:Как выпустить UIStoryboard

if([ModuleTeacher isEqualToString:type]){ 
    [self loginStateChanged]; 

    if([TeacherProfile getCurrentTeacher]!=nil){ 
     [self startPull]; 
    } 
}else if([ModuleStudent isEqualToString:type]){ 
    UIStoryboard *main = [UIStoryboard storyboardWithName:@"StudentMain" bundle:nil]; 
    self.window.rootViewController = [main instantiateInitialViewController]; 

    if([StudentProfile getCurrent]!=nil){ 
     [self startPull]; 
    } 
}else if([ModuleOrgnization isEqualToString:type]){ 
    UIStoryboard *main = [UIStoryboard storyboardWithName:@"OrganizeMain" bundle:nil]; 
    self.window.rootViewController = [main instantiateInitialViewController]; 
    [AppCache setModule:type]; 
} 

таким образом старая раскадровка никогда не будет выпущена.

+2

Откуда вы знаете, что не выпустили? – HalR

ответ

0
  1. Использование ARC.

  2. Если у вас есть ссылки на раскадровку, которые вам больше не нужны, установите их в нуль.

  3. Там нет ни одного шага 3.

ARC гарантирует, что вы отпускаете все ссылки, которые больше не нужны. Убедившись, что ваши сильные ссылки очищены, когда они не нужны, ARC подойдет правильно. Если ваш код не несет ответственности за сохранение раскадровки, вы не несете ответственность за выпуск чего-либо. Структура Cocoa Touch может висеть на раскадровке по своим собственным причинам - это не ваша проблема.

+1

спасибо в первую очередь. Я использовал ARC, и я установил всю сильную переменную в ноль, но я включил несколько раскадровки, мы обнаружили, что старая раскадровка не была выпущена, потому что dealloc не называется – Shareach

+0

. Я хочу сказать, что что-то в рамке может держаться на раскадровке, возможно, кэшировать его для повышения производительности или чего-то еще. До тех пор, пока вы знаете, что вы не храните ненужную ссылку на раскадровку, вам не следует беспокоиться о том, освобождается ли раскадровка. – Caleb

+0

Когда я использовал «чистый цвет» на моем UIVviewController bgColor, я это вижу. И я думаю, может быть, какой-то старый код, который использовал viewDidUnload для выпуска дескриптора, но ios5 позже это было ... – Shareach

Смежные вопросы