2010-06-23 6 views
0

나는의 ViewController, 내가 viewload 이벤트에 xTitle = @ "anytext"을 설정하면NSString이 "Invalid"라고하는 이유는 무엇입니까? objC, IPhone?

파일 testViewController.m의 상단에 있는 NSString * xTitle를 선언있다; 버튼을 탭하면 UIActions 시트가 표시됩니다.

나는 UIActionSheet의 clickedButtonAtIndex에서 xTitle을 읽으려고합니다. xTitle의 값 "anytext"를 볼 수 있습니다.

하지만 NSDictionary에서 xTitle을 설정할 때 잘못된 것으로 표시됩니다.

viewload 이벤트;

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

NSLog(@"%@", xTitle);는 -> 그것은 값 를 기록하지만 난 uiactionsheet 행사에 xTitle을 읽을 캔트. 그것은 무효라고 말합니다.

"잘못된"이유는 무엇입니까?

답변

0

, 당신은 아마 수행해야합니다

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

그리고 일부 이후의 시점에서 물론 release을 당신이 그것으로 완료.

NSString 리터럴 @"anytext"을 사용할 때 이것은 상수 문자열이 기본적으로 정적이기 때문에 사용자에게 영향을 미치지 않습니다. 즉, 일반적으로 코드의 전체 수명 동안 고정되어 있기 때문입니다. 당신은 수 있습니다 (그리고 어쩌면 어떤 의미에서) retainrelease 이것도 있지만, 실제로 그들에게 아무것도하지 않습니다.

(이 내용에 대해 궁금한 점이 있습니다. xTitle.m 파일 상단에 선언되어있는 경우 어떻게 작업 시트에 넣을 수 있습니까? 이 문제와 밀접한 관련이 있습니다.)

+0

xTitle = @ "anytext", 또는 xTitle = [결과 valueForKey : @ "ContentURL"] 값을 제공 할 경우의 차이점은 무엇입니까? xtitle = @ "anytext"로 설정하면 모든 이벤트에서 작동합니다. 예 보유 작품. 하지만 왜 이해가 안되니? – tester

+0

cas actionSheet clickedButtonAtIndex가 동일한 .m 파일에 있습니다. – tester

+0

@tester 위의 다소 확장 된 설명 참조 – walkytalky

0

당신이 사전에 정확하게 볼을 만들 Direcly 후

NSLog (@"%@", results); 

을 수행하십시오. 사전에있는 내용을 편집하려면 편집을 누릅니다. 당신이 문자열이 기능을보다 오래 할 때문에

+0

{ CommentCount = 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 = [결과 valueForKey : @ "ContentURL"] 바로 뒤에 값을 읽습니다. NSLog (@ "% @", xTitle); 하지만 다른 이벤트의 값을 표시하지 않습니까 ??? ??? – tester

관련 문제