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