我在一个类中进行了以下设置,在该类中,我将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];
    }
}

最佳答案

您的问题是在属性上使用copy,在设置器中使用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;
}


无需覆盖设置器。

关于ios - 如何通过NSMutableDictionary作为引用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56372100/

10-14 22:52