【问题标题】:Problem with releasing of NSMutableDictionary发布 NSMutableDictionary 的问题
【发布时间】:2009-04-04 12:13:27
【问题描述】:

当我尝试发布字典时出现异常。

这是我的代码:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    if (!tableDataDictionary)
{
    DebugLog(@"initializing tableDataDictionary");
    tableDataDictionary = [ [NSMutableDictionary alloc] init];
}
}

-(void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [mainTableView deselectRowAtIndexPath: [mainTableView indexPathForSelectedRow] animated:NO];

    [tableDataDictionary release];
}

我该如何解决?

【问题讨论】:

    标签: iphone objective-c cocoa-touch


    【解决方案1】:

    您很可能需要清除 tableDataDictionary 实例变量。否则,这些方法中的每一个第一次运行时都可以正常工作,但第二次,tableDataDictionary 将不会为 nil,并且将指向一个 dealloc'd 指针;因此不会进行 alloc 调用,并且当 viewWillDisappear: 被调用时,它将尝试再次释放该指针。所以,修复它:

    -(void)viewWillDisappear:(BOOL)animated {
        [super viewWillDisappear:animated];
        [mainTableView deselectRowAtIndexPath: [mainTableView indexPathForSelectedRow] animated:NO];

    [tableDataDictionary release];
    tableDataDictionary = nil;
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-11
      相关资源
      最近更新 更多