NSMutableDictionary未正确初始化

时间:2012-06-14 13:09:13

标签: iphone objective-c ios nsarray nsmutabledictionary

我今天遇到了一个惊悚错误。我有NSArrayNSMutableDictionary。问题是我的NSMutableDictionary变成了一个数组。这是代码:

头:

NSArray *tableViewCellValues;
NSMutableDictionary *inputValues;

实现:

- (void)viewDidLoad
{
  [super viewDidLoad];
  tableViewCellValues = [NSArray arrayWithObjects:@"First", @"Second", @"Third", nil];
  inputValues = [NSMutableDictionary dictionary];
  //other code...
}

通常我应该得到一个数组,其中“First”,“Second”和“Third”作为对象,空NSMutableDictionary。当我在初始化NSMutableDictionary后立即在日志中打印它时,我得到以下内容:

(lldb) po tableViewCellValues
(NSArray *) $1 = 0x00000000 <nil>
(lldb) po inputValues
(NSMutableDictionary *) $2 = 0x06a80420 <__NSArrayI 0x6a80420>(
First,
Second,
Third
)

(lldb) po [tableViewCellValues class]
error: Couldn't execute function; result was eExecutionDiscarded
(lldb) po [inputValues class]
(id) $4 = 0x01453b64 __NSArrayI

我有点困惑。我试着清理并再次运行它,但没有任何反应。

我正在使用Mac OS X 10.7.3和Xcode 4.3,如果它很重要的话。

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:2)

你真的想为你的字典分配内存,所以它应该是:

self.inputValues = [[NSMutableDictionary alloc] init];

答案 1 :(得分:1)

新的文字语法更好:

self.myMutDict = [@{} mutableCopy]

或没有属性的较长版本只是为了理解:

NSDictionary *emptyDict = @{};
NSMutableDictionary *myMutDict = [emptyDict mutableCopy];

答案 2 :(得分:-1)

这是因为你没有分配词典

使用此代码

inputValues = [[NSMutableDictionary alloc] init];