タグ

ブックマーク / blog.ishkawa.org (5)

  • JSONにNSNullが入ってきたとき

    多くのiOSアプリはサーバーとの通信が必要で、やりとりされるデータのフォーマットにはJSONが採用されることが多いと思います。 iOS 5からは標準ライブラリにNSJSONSerializationが導入され、特に理由がなければJSONのエンコード/デコードにはこれを利用します。 NSJSONSerializationが扱うオブジェクトは以下の5種類のオブジェクトです。 NSString NSNumber NSArray NSDictionary NSNull そこで心配になるのが、予期しないところにNSNullが入ってきて”unrecognized selector sent to instance.“となってしまうことです。 NSNullではなくてnilが入っていてほしいと考える人は多いようですが、そもそもNSArrayやNSDictonaryはnilを含むことはできず、 そのような状

  • iOS開発でのユニットテストを身につけるには

    テストがないコードはクソとか、このテストツールこそ至高みたいな話が世に溢れているわけですが、 そういう状況になってくると、どうやって始めたらいいのかわからなかったりすると思います。 そういう人のために、何を読んで勉強し、何を使って何を書くと始めやすいかという抽象的な解説をしようと思います。 テストフレームワークの選択 テスト初心者の最初の壁はフレームワークの選択です。 iOSのテストについて調べると、SenTestingKitはクソとかGHUnit最高とかKiwiこそ至高とか言っている人がいると思います。 ですが、入門に最も適しているのはSenTestingKitです。 セットアップが他と比べて簡単だということと、機能が十分に小さくて機能に溺れることがないということが理由です。 SenTestingKitの使い方を学ぶ いきなり突き放すようなんですが、Appleの公式のドキュメントを読むの

  • モバイル版のGitHubにフィードがなかったので、補うiOSアプリをつくってリリースした

    プッシュ通知などもついていて、なかなか便利なものになりました。 アプリをダウンロード GitHubのモバイル版(Web)はかなり良くできていて流石だなあと思っていたのですが、 肝心のフィードがなかったりして、モバイル版の役割を十分にカバーできていないと思いました。 それを補うのがGHFeedです。具体的には以下の2つの機能を提供しています。 フィードの表示 ハイライトされるイベントをプッシュ通知 前者はpull型の利用で、時間があるときにフィードを見て面白そうなリポジトリがあればスターをつけたりしておく、というような利用を想定しています。 後者はpush型で、自分が関わるリポジトリにイベントがあった時に早く気づけるようにするという利用を想定しています。 自分はこの2つの利用パターンが可能になって、はじめてモバイル版のGitHubが成り立つんじゃないかなあと思い、開発にいたりました。 振り返

  • xib/storyboardとの付き合い方について - blog.ishkawa.org

    アプリが大きくなるとstoryboardの小回りの利かなさに泣きたくなることがあると思います。 そうした反動からすべてのUIをコードで実装しているiOS開発者も少なくないと思います。 自分は全部storyboardにして痛い目にあってから、全部コードにしてまた痛い目に遭い、 結局コードとxibとstoryboardを上手く使い分けるのが良いという結論に達しました。 最近、やり方が定まってきてストレスを感じなくなってきたので方法をまとめます。 これから書くことは個人の見解ですが、自分のやり方を決める上では無駄にならないと思います。 使い分け方と理由 基方針: 以下に挙げる条件にマッチする場合除いて、コードで実装を行います。 xibを使う条件 viewの複雑度が高い場合(subviewが2,3個以上の場合)にはxibを使います。 xibを利用する理由は以下のような退屈なコードをたくさ

  • 1行で導入するback gestureの話とUINavigationBarを拡張した話 - blog.ishkawa.org

    一昨日、conferenceWithDevelopersのLTで、1行で導入するback gestureの話をしてきました。 LTの内容と、やろうとして間に合わなかったことの紹介を書きます。 1行で導入するback gesture iPhone 5が発売されて、UINavigationBarのbackButtonItemに指が届きにくくなったので、 スワイプして戻るという動作を実装するアプリが増えてきたように思います。 これを実装するにはUIGestureRecognizerを使ってあれこれするのですが、 毎回これを書くのはだるいので、UIViewControllerを拡張して 1行で導入できるようにしたライブラリを書きました。 ISBackGesture 使い方 UIViewControllerにbackGestureEnabledというプロパティが追加されているので、 これの値をY

  • 1