【问题标题】:nsmutabledictionary is showing memory leaknsmutabledictionary 显示内存泄漏
【发布时间】:2013-11-05 09:50:27
【问题描述】:

为什么将 nil 分配给 nsmutabledictioanry 并分配会导致崩溃并显示此时内存释放?

    self.delegate.replenishAddedmaterials = nil;
    self.delegate.replenishAddedmaterials = [[NSMutableDictionary alloc] init];
    MATERIAL_ITEM *materialItem = [[MATERIAL_ITEM alloc] init];
    VENDOR_HEADER *vendor = [[VENDOR_HEADER alloc] init];
    PURCHASING_ORG_HEADER *purOrg = [[PURCHASING_ORG_HEADER alloc] init];

    [self.delegate.replenishAddedmaterials setObject:[NSMutableArray arrayWithObject:materialItem] forKey:materialItem];
    [[self.delegate.replenishAddedmaterials objectForKey:materialItem] addObject:vendor];
    [[self.delegate.replenishAddedmaterials objectForKey:materialItem] addObject:purOrg];

执行 nsmutabledictionary 分配后,我收到以下消息

* -[MATERIAL_ITEM release]: message sent to deallocated instance 0x11e62810>我已经在 ARC 中实现了我的项目

【问题讨论】:

    标签: iphone memory-management


    【解决方案1】:

    你确定这条线是正确的吗?

         [self.delegate.replenishAddedmaterials setObject:[NSMutableArray 
    arrayWithObject:materialItem] forKey:materialItem];
    

    你用数组上的对象作为key,真的很奇怪。

    尝试自己创建密钥:

         [self.delegate.replenishAddedmaterials setObject:[NSMutableArray 
    arrayWithObject:materialItem] forKey:@"materialItemKey"];
    

    【讨论】:

    • 实际上我有对象 materialItem 并且它是唯一的,因此对于每个 materialitem 键具有对象数组的不同材质项是创建这样的字典的概念。这是动态的,我将获得键和值从服务器和程序上它是字典的动态构造。
    • 如果有其他方法可以构建字典
    • 就像我说的那样使用字符串作为键
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多