Почему NSString говорит, что это «Invalid», objC, IPhone? - PullRequest
0 голосов
/ 23 июня 2010

У меня есть ViewController, я объявляю NSString * xTitle вверху в файле testViewController.m

когда я устанавливаю xTitle = @ "anytext" в событии viewload;и я нажимаю кнопку, она показывает таблицу UIActionsheet.

Я пытаюсь прочитать xTitle в clickedButtonAtIndex UIActionSheet.я вижу значение xTitle "anytext", все в порядке.

, но когда я устанавливаю xTitle из NSDictionary, он говорит Invalid.

событие просмотра загрузки;1012 * -> это записывает значение, но я не могу прочитать xTitle в событиях uiactionsheet.он говорит, что недействителен.

почему он говорит "Неверный"?

Ответы [ 2 ]

0 голосов
/ 23 июня 2010

Так как вы хотите, чтобы строка пережила функцию, вам, вероятно, нужно сделать:

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

И, конечно, release это в какой-то последующий момент, когда вы закончите с этим.

Это не влияет на вас при использовании литерала NSString @"anytext", потому что константы в основном статичны - то есть они обычно остаются в течение всего времени жизни вашего кода. Вы можете (и, может быть, в некотором педантичном смысле) retain и release тоже, но на самом деле это ничего с ними не делает.

(Мне немного любопытно, насколько это возможно - если в верхней части файла .m объявлено xTitle, как вы можете это сделать в своем листе действий - но я не не думаю, что это имеет отношение к этой проблеме.)

0 голосов
/ 23 июня 2010

Попробуйте сделать

NSLog (@"%@", results);

Прямо после создания, чтобы увидеть, что именно находится в словаре.Отредактируйте, чтобы показать нам, что находится в словаре.

...