bad URLでつまづく。
bad URL が出てつまづいてた。
以下を参考にさせていただいて原因はおそらく
twitter APIに投げるリクエストに全角を含む文字列を渡してたからbad URLが出てたみたい。
[Objective-C] URLエンコード
http://blog.springdawn.info/post/41322443902/objective-c-url
NSURL *encodedUrl = [NSURL URLWithString:urlString];
NSString *encodedUrlString = [encodedUrl absoluteString];
niccollive: NSURLConnectionに渡すURLはきちんとエンコードしてから渡すこと
http://log.niccol.li/2011/02/nsurlconnectionurl.html
NSDataからNSStringに変換する際、initWithData:encoding:って文字コードを指定するんだけれども
http://www.j7lg.com/archives/213
元
NSString *urlString = @"https://api.twitter.com/1.1/search/tweets.json?q=あまちゃん"; [urlString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
変換一覧(引用)
NSUTF8StringEncoding, // UTF-8
NSShiftJISStringEncoding, // Shift_JIS
NSJapaneseEUCStringEncoding, // EUC-JP
NSISO2022JPStringEncoding, // JIS
NSUnicodeStringEncoding, // Unicode
NSASCIIStringEncoding // ASCII
文字列に全角含ませない形にしてとりあえずbad URLは消えました。
消えたのですが方法的に正しくなかったです。↑のアスキーコードへの変換ではなく、
Twitter APIに投げる場合はUTF-8にエンコードする。
NSLog を出さないように(メモ)
本番環境で NSLog() を吐き出さないようにする << 水色のドア
http://blog.nodoa.info/?p=100
iPhone アプリ開発中に NSLog() を使ってログを確認することはよくあります。
その NSLog() を残したままアプリをリリースしてしまうと、
リリースされたアプリでもご丁寧にログを吐き出すそうです。ログを吐き出すと、動作が遅くなったり、セキュリティ面で危なかったりします。
でも、だからといってリリース前に全ての NSLog() 文を削除するのは、それはそれで面倒なケースもありますね。
そんな時は、NSLog() を開発環境でのみログを吐き出し、本番環境ではログを吐き出さないようにマクロで定義すれば OK です。
まだまだリリースは遠いですが・・・
出すときの為のメモとしてこういう方法もあるんだと覚えておこう・・・。