如何通过NSMutableDictionary作为参考?

时间:2019-05-30 05:24:43

标签: ios objective-c nsdictionary

我在一个类中进行了以下设置,在该类中,我将NSMutableDictionary作为参数传递给初始化程序,然后将其分配给变量controls

我认为行为是将NSMutableDictonary的项目复制到controls中,但是我需要将其作为引用传递,以便所做的更改反映在传递MenuViewCell的字典。这总是使我感到困惑,我将如何通过NSMutableDictionary作为参考?

MenuViewCell.h

@interface MenuViewCell : UITableViewCell
{
    NSMutableDictionary *_controls;
}
@property(nonatomic, copy) NSMutableDictionary *controls;

MenuViewCell.m

@synthesize controls = _controls;

- (id)initWithControls:(NSMutableDictionary *)controls 
{
    self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
    if (self)
    {
        self.controls = controls;
    }
    return self;
}

- (void) setControls:(NSMutableDictionary *)controls
{
    if (_controls != controls)
    {
        _controls = [controls mutableCopy];
    }
}

1 个答案:

答案 0 :(得分:0)

您的问题是在属性上使用copy,在setter中使用mutableCopy。设置属性strong

您也不需要@synthesize或显式实例变量。

MenuViewCell.h

@interface MenuViewCell : UITableViewCell

@property(nonatomic, strong) NSMutableDictionary *controls;

MenuViewCell.m

- (id)initWithControls:(NSMutableDictionary *)controls 
{
    self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
    if (self)
    {
        _controls = controls;
    }
    return self;
}

无需覆盖设置器。