【问题标题】:NSDictionary - Don't Copy Values?NSDictionary - 不要复制值?
【发布时间】:2010-10-24 21:35:12
【问题描述】:

我正在尝试使用以下方法管理场景中的一些动画:

  1. 在循环中,创建动画 UIImageView,设置on停止 方法。另外,存储这个 UIImageView 在 NSMutableDictionary 中。动画ID与字典中的key相同。

  2. 当此动画停止时,获取动画 ID。使用 [animations objectForKey: animationID] 获取 imageview 对象。我从超级视图中删除图像视图并释放它。我还使用键从字典中删除对象。

  3. 创建另一个动画对象,冲洗,重复。

问题是,当我根据key去获取对象时,返回NULL。我认为这与字典的工作方式有关——它复制值而不是保留它们。因为它是复制的,所以我实际上无法删除该对象。

如何让 NSDictionary 不复制这些对象(所以我有原始对象)或者如何释放这些动画对象并在它们完成动画后将它们从超级视图中删除?

【问题讨论】:

    标签: iphone objective-c nsdictionary


    【解决方案1】:

    NSDictionary 不复制对象(只有键)。您返回 NULL 的唯一原因是您提供了错误的密钥,或者该对象已被删除。

    从您的描述中不是 100% 清楚,但您似乎建议您“2. ...从字典中删除对象...”,然后稍后“...得到对象。 ……”。如果这是两个独立的活动,那么您在第二次访问时肯定不会在那里找到该对象。

    【讨论】:

    • 嗯,也许我误读了另一篇堆栈溢出文章。让我再检查一下我的代码...
    • 即使在我设置它之后它看起来也为空。将进一步调查。谢谢。
    • 作为后续,我从未调用过 [[NSMutableDictionary alloc] init]。 :(
    • 发给nil 的消息无声无息地失败,这让我很恼火;这一直让我感到困惑(我什至忘记考虑你的这种可能性)。好吧,我很高兴看到你最终发现了问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    相关资源
    最近更新 更多