0

アプリでいくつかの 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];
}

この方法では、古い絵コンテがリリースされることはありません。

4

1 に答える 1

0
  1. ARC を使用します。

  2. 不要になったストーリーボードへの強力な参照がある場合は、それらを nil に設定します。

  3. ステップ3はありません。

ARC will ensure that you release any references that are no longer needed. Making sure that your strong references are cleared when not needed lets ARC do the right thing. If your code isn't responsible for retaining the storyboard, you're not responsible for releasing anything. The Cocoa Touch framework may hang onto the storyboard for its own reasons -- this isn't your problem.

于 2013-07-28T13:29:28.973 に答える