我在一个类中进行了以下设置,在该类中,我将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];
}
}
答案 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;
}
无需覆盖设置器。