2014年5月24日土曜日

ハマったことシリーズ No12.

今回は、UIWebViewのキャッシュの話しです。

いままでUIImageなどで作っていた部品をクラウド上に置いておいて、自由に画像を差し替えられるようにしたい。 なので、UIWebViewのキャッシュを使う事を考えました。
いろいろググっていると、iOS5からUIWebViewのキャッシュはディスク上にも保存される という記事を見つけ、できることを確認し、コーディング。

[myWebView loadRequest:[NSURLRequest requestWithURL:url      cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:60]] ;

という感じにしておけば、オフラインでも画像表示でき、オンライン状態であれば 画像の差し替えもできるはず。 さぁテスト!

ここでハマリました。

そう、ぜんぜんキャッシュされない。 
原因は、iOSシミュレータのバグ?でした。 iOS6.1のシミュレータだけキャッシュされない。実機(6.1.3)ではしっかりキャッシュが動いてくれました。

最初はシミュレータで!というのも凝り固まらないようにしないとですね。

2014年5月21日水曜日

ハマったことシリーズ No11.

今回は、「UIViewControllerは、まず消える!?」です。  プログラマ以外の方には、意味不明のお話です。

自分の画面のためのクラスは、UIViewControllerを継承して作るお作法ですよね?
その元のUIViewControllerの標準メソッドの (void)viewWillDisappear:(Bool)animated のお話。

これ、画面が表示されるときに viewDidLoadの後に呼ばれることがあるのです。 ていうか自分で呼んでましたww。当然、通常は呼ばれないようですが、拾ってきたカスタムセグウェイの中で、一度rootViewControllerに設定して回転方向の修正をし、再度独自トランジッションをかけていたのです。

これでハマリました。

viewDidLoadで、addObserver: forKeyPath: options: context でオブザーバ追加し、
viewWillDisappearで、removeObserver: forKeyPath:でオブザーバ削除をしていたのですが、
待てど暮らせど、observerValueForKeyPath: ofObject: change: context: が呼ばれない。

そりゃそうです。 追加した直後に削除してりゃ、呼ばれるわけない。
設定してないときに removeObserverすると例外で落ちるので、フラグを使って設定してなければremoveObserverを呼ばないようにしていたので発見が遅れました。

原因が分かれば対処は簡単。viewDidAppearで addObserverするように変更し一見落着です。

2014年5月20日火曜日

コードを書くとお姉さんが・・・してくれるプログラミング学習サイト『Codebabes』
明日から勉強する!とならない魅力的な学習サイトかもしれませんね。



iOSアプリ開発における便利OSSライブラリの選定について - cockscomblog?
ライブラリ便利ですが、先々の事を考えてどれを使うかその判断基準の参考に。




こうぜい — TDC Tokyo 2014タイプデザイン賞受賞!美しい手書き仮名書体がついに発売開始 - フォントブログ
考えられた美しいフォントです。前後の文字によって字形が切り替わるのがまた美しいです。そして安い。最近は良いフォントがたくさん出てきてハッとさせられます。




LINE iOSアプリ開発についてのご紹介
丁寧に説明されている感じがしますので、ご紹介。




プログラムの中身が見れる「jsdo.it」で、天才的な猛者のWeb作品10選を集めてみた!
どれもすごい!動きや考え方を参考にして開発に役立ててください。




もうすぐワールドカップ!
サポータルはワールドカップ前の親善試合の3試合に対応しました!!
ぜひ遊んでみてくださいね。そして6月はワールドカップ!!!