init之后NSMutableDictionary为null

时间:2011-11-29 09:21:26

标签: objective-c ios pointers

我有一个方法可以创建一个新的NSMutableDictionary,设置一些对象,然后像这样自动释放返回该字典:

NSMutableDictionary* parameters = [NSMutableDictionary new];

[parameters setObject:@"banana" forKey:@"fruit"];
[parameters setObject:@"potato" forKey:@"vegetable"];
[parameters setObject:@"water" forKey:@"drink"];

return [parameters autorelease];

一切正常但是当我在返回参数指针之前设置断点时,想要通过使用print对象查看gdb内部的内容,它会向我显示对象。但是,当我想访问计数时,它会失败,并告诉我它没有指向有效的对象?

(gdb) po parameters
{
drink = water;
fruit = banana;
vegetable = potato;
}

(gdb) po [parameters count]
0x3 does not appear to point to a valid object.

发生了什么事?

2 个答案:

答案 0 :(得分:1)

只需输入p [parameters count]

po只能用于Objective-C对象(它意味着 p rint o bject)。 count是一个整数,它不是Objective-C对象。

答案 1 :(得分:1)

您正在使用带字典计数的po作为参数。所以GDB实际上是在尝试打印位于内存地址3(计数)的对象。

你的字典很好。

如果要打印计数值,请使用p而不是po。