【问题标题】:Passing a dictionary from view controllers从视图控制器传递字典
【发布时间】:2009-12-23 12:43:37
【问题描述】:

在我的一个导航视图控制器中,我构建了一个字典数组以显示在表格中。根据我选择的那个我然后使用从数组中删除字典 NSDictionary *notice = [notices objectAtIndex: roomIndex];

我使用创建新的视图控制器 Feed *notice_view = [[Notice alloc] initWithObject: notice];

我推送导航视图控制器,并实现了 initWithObject ,它接受一个字典。

我发布了通知和通知视图,所有这些都正常工作,但如果我选择返回,请在整个应用程序崩溃的第三次或第四次选择返回。如果我不释放它们,它工作得很好,没有任何问题,当然内存泄漏除外。如果我只释放它们中的一个,它们中的任何一个,它都会再次失败。是什么赋予了?我应该不使用 initWithObject 还是应该以其他方式传递它?我也尝试过使用自动释放,但结果相同。

【问题讨论】:

  • 如果您发布一些代码,可能会更容易获得帮助。

标签: iphone


【解决方案1】:

注意 - 你不应该释放,因为你不拥有这个对象(你只是使用一个从 NSArray 返回的对象),否则当你从 NSArray 检索对象并在稍后阶段释放它时保留这个对象。

notice_view - 根据您的解释,我认为发布没有任何问题,我假设您没有从代码的其他部分对该对象的任何引用。

【讨论】:

  • 注意——当然是有道理的。 k,我试图发布 notice_view,我确定我尝试过相同的结果,但现在它工作正常 -_- 感谢您的回复 :)
  • 我弄清楚了我在闲逛时发生的事情,这引发了另一个问题。如果我在Notice_view 中声明一个字典并将传递的字典复制到其中,如果我说dictionary = 在第三次之后失败,如果我说self.dictionary = its Kosher。我来自其他语言,如果这是菜鸟或错误,请原谅
  • dictionary = it -> 在这种情况下,您的保持指针引用但您不拥有该对象(如果您想拥有该对象字典 = [它保留]) self.dictionary = its -> self.dictionary 在这种情况下,您使用的是使用“属性”(objective C 2.0)定义的默认 setter 方法,该方法向对象添加保留计数(使其归对象所有)
【解决方案2】:

我猜你会想要摆脱 [selectedNotice release],因为那里似乎没有相应的 -retain 调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多