2009-08-18 22 views
0

データを(ウェブページから)文字列に変換しています)。基本的なコードは機能します(ただし、サーバー上のどこかに微妙な変更があります)。"無効" iphone文字列

NSLogは、予想される文字列(おそらく1000文字の長さ)を表示します。しかし、私がresponseStringの上を浮動すると、 "無効"と表示されます。さらに悪いことに、componentsSeparatedByCharactersInSetを使った解析は機能しません。

アイデア?

NSString *responseString; 
responseString = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; 
NSLog([NSString stringWithFormat:@"responsestring ='%@'",responseString]); 
if ([responseString compare:@""] != NSOrderedSame) { 
    lines = [responseString componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@";"]]; 
+0

文字列を比較するためにcompare:の代わりにequalsTo:を使うことができます。次に、NSOrderedSameと同じにする必要はありません。 – rein

+0

こんにちは - チップのおかげで。 isEqualに行った。 – BankStrong

+0

また、あなたのNSLogはstringWithFormatのものを持つ必要はありません。実際、それは悪くなるでしょう。 NSLog(@ "responseString = '%@'"、responseString)は自動的に書式設定されているため、必要な処理を行います。 (それが悪い理由は、応答文字列に%が含まれていると、@ "responseString = '%で返されたあるランダム値'" – AlBlue

答えて

2

これは、「デバッグ」ではなく「リリース」に設定されている場合に発生する可能性があります。

0

デバッガは、これは私に起こったとXcodeのデバッガは常に正しいものではなく、信頼できないことを実現するために私にしばらく時間がかかったた、正確ではない、と言うので、私はもはや何を信用しないでください。デバッガを信頼して、何かが無効であると言おうとするたびにnslogステートメントを使用します。だからそれについては心配しないでください。私に起こったときに、私はまた、いくつかのWebサービスからの応答を解析していました。

+0

死んでいる可能性があるためです。私は戻って、 "リリース"にバージョンを設定することを実現しました。デバッガは、値を把握できない場合、 "不明 - リリースバージョンを使用する"のような異なる値を提供する必要があります。 – BankStrong

0

ちょうど明白である - 私の経験は、デバッガで「無効」と表示されているということは、既にリリースされているオブジェクトへの参照であることを意味します。

以下の質問とコメントは、「無効」が実際の文字列の値であると考えているように思われますが、メモリ管理はおそらくありませんか?

関連する問題