0

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]: 割り当て解除されたインスタンス 0x11e62810 にメッセージが送信されました>ARC でプロジェクトを実装しました

4

1 に答える 1

1

この行は正しいですか?

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

配列上のオブジェクトをキーとして使用していますが、それは本当に奇妙です。

自分でキーを作成してみてください。

     [self.delegate.replenishAddedmaterials setObject:[NSMutableArray 
arrayWithObject:materialItem] forKey:@"materialItemKey"];
于 2013-11-05T10:02:51.323 に答える