如何将 NSMutableDictionary 作为参考传递?
How to pass NSMutableDictionary as a reference?
我在我的一个 class 中进行了以下设置,我将 NSMutableDictionary
作为参数传递给初始化程序,然后将其分配给变量 controls
。
我认为行为是将 NSMutableDictonary
的项目复制到 controls
,但我需要将其作为参考传递,以便所做的更改反映在 [=21] =] 将字典传递给 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
并在 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;
}
无需覆盖 setter。
我在我的一个 class 中进行了以下设置,我将 NSMutableDictionary
作为参数传递给初始化程序,然后将其分配给变量 controls
。
我认为行为是将 NSMutableDictonary
的项目复制到 controls
,但我需要将其作为参考传递,以便所做的更改反映在 [=21] =] 将字典传递给 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
并在 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;
}
无需覆盖 setter。