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 です。

まだまだリリースは遠いですが・・・
出すときの為のメモとしてこういう方法もあるんだと覚えておこう・・・。