2010-06-23 2 views
0

У меня есть ViewController, я декларировать NSString * xTitle в верхней части в testViewController.m файлПочему NSString говорит, что это «Invalid», objC, IPhone?

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

Я пытаюсь прочитать xTitle в файле UIActionSheetButtonAtIndex. Я вижу значение xTitle «anytext», это нормально.

но когда я установил xTitle из NSDictionary, он говорит «Недействительно».

viewload event;

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

NSLog(@"%@", xTitle); -> он записывает значение но я не могу прочитать xTitle в UIActionSheet событий. он говорит недействительным.

Почему он говорит «Недействительный»?

ответ

0

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

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

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

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

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

+0

В чем разница между тем, если я даю значение xTitle = @ "anytext", или xTitle = [results valueForKey: @ "ContentURL"]? если я установил xtitle = @ "anytext", он работает в каждом случае. да сохранить работы. но я не понимаю, почему? – tester

+0

cas actionSheet clickedButtonAtIndex находится в том же файле .m. – tester

+0

@tester см. Несколько расширенное объяснение выше – walkytalky

0

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

NSLog (@"%@", results); 

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

+0

{ КомментарийCount = 15; ContentDeck = "Lorem Ipsum."; ContentURL = "/ content/18888/lorem"; ContentID = 18888; ThumbnailURL = "http://media1.dummy.net///C/I//42/masada38_4ZK6T.jpg"; VideoURL = ""; } – tester

+0

Я читаю значение сразу после xTitle = [results valueForKey: @ "ContentURL"]; NSLog (@ "% @", xTitle); , но он не показывает значение в другом событии ??? – tester

Смежные вопросы