为什么NSString说它是“无效”,objC,IPhone?

时间:2010-06-23 17:16:04

标签: iphone nsstring nsdictionary objective-c

我有一个ViewController, 我宣布 NSString * xTitle位于testViewController.m文件的顶部

当我在viewload事件中设置xTitle = @“anytext”时; 然后点击一个按钮,它会显示UIActionsheet。

我尝试在UIActionSheet的clickedButtonAtIndex中读取xTitle。 我看到xTitle的值“anytext”,没问题。

但是当我从NSDictionary设置xTitle时,它表示无效。

viewload event;

NSDictionary *results = [jsonString JSONValue];
xTitle  = [results valueForKey:@"ContentURL"];

NSLog(@"%@", xTitle); - >它写出了价值 但我无法在uiactionsheet事件中阅读xTitle。它说无效。

为什么说“无效”?

2 个答案:

答案 0 :(得分:0)

尝试

NSLog (@"%@", results);

创建它之后,直接查看字典中的内容。编辑以向我们显示字典中的内容。

答案 1 :(得分:0)

由于您希望字符串比该函数更长,您可能需要这样做:

xTitle = [[results valueForKey:@"ContentURL"] retain];

当然,release在你完成它之后的某个时间点。{/ p>

这在使用NSString文字@"anytext"时不会影响您,因为常量字符串基本上是静态的 - 也就是说,它们通常会在代码的整个生命周期内保持不变。你可以(也许在一些迂腐的意义上)retainrelease这些也是如此,但实际上并没有对他们做任何事情。

(我对这个问题的范围有点好奇 - 如果在xTitle文件的顶部声明了.m,你如何在你的行动表中得到它 - 但我不认为这与这个问题密切相关。)