タグ

ブックマーク / glassonion.hatenablog.com (7)

  • iOS アプリの構造がどのようになっているか紐解いてみる - A Day In The Life

    iOS アプリの構造がどのようになっているのか理解しなくても簡単なアプリを開発することは可能です。実際自分も iOS アプリの開発をはじめたことろはそうでした。しかしアプリの構造を理解していないと複雑なアプリ、例えばタブとナビゲーションを組み合わせたアプリやマルチタッチやジェスチャーを使ったアプリなどを作ろうとしたときにハマることが多いです。 記事では iOS アプリの構造について説明します。 一番単純なアプリの構造 それでは iOS アプリの中でも一番単純なアプリの構造がどうなっているのか見てみましょう。 iOS で一番単純なアプリは画面を一つ表示するアプリです。画面を一つ表示するアプリはシングルビューアプリケーション(Single View Application)といいます。 ラベルもボタンもなく、ただ真っ白な画面を表示するだけのアプリがどのような構造になっているのかみてみましょう

    iOS アプリの構造がどのようになっているか紐解いてみる - A Day In The Life
  • NSOperation 非並列実行モードと並列実行モードの使い分け - A Day In The Life

    バックグラウンド処理を手軽に実行できる NSOperation クラスですがこのクラスをきちんと理解して使うには NSOperationQueue クラスについて理解する必要があります。 前回の記事で NSOperationQueue の使い方について説明しました。まだお読みでない方はこちらの記事を先に目を通しておくことをお勧めします。 NSOperationQueue スレッドと処理の関係 今回は NSOperation について NSURLConnection を使ったサーバ通信プログラムを例に説明していきます。 NSOperation には2つの実行モードが存在する NSOperation クラスには「非並列実行モード」と「並列実行モード」の2つの実行モードがあります。 非並列実行モードは処理の終了を NSOperationQueue に任せるのに対し、並列実行モードはプログラマが任

    NSOperation 非並列実行モードと並列実行モードの使い分け - A Day In The Life
  • NSOperationQueue スレッドと処理の関係 - A Day In The Life

    iOS4 になって NSOperationQueue クラスの仕様に追加がありました。以前は並列処理しか出来なかったのですが mainQueue メソッドが追加になり逐次処理も出来るようになりました。変更点も含めて NSOperationQueue の使い方をまとめてみます。 NSOperationQueue クラスの使い方をきちんと理解していると NSOperation クラスの非並列実行モードと並列実行モードの使い方を間違えることも少ないと思います。 NSOperation クラスについては以下の記事で詳しく説明しています。 NSOperation 非並列実行モードと並列実行モードの使い分け NSOperationQueue と NSOperation の関係 NSOperationQueue と NSOperation を使うと、バックグラウンドで何か処理をしたい場合に一連の処理をま

    NSOperationQueue スレッドと処理の関係 - A Day In The Life
  • メソッド設計で守るべき10個のルール - A Day In The Life

    以前メソッド設計の原則に関する記事を書きましたが 質問をすることで答えは変更されない原則 メソッドの引数はオペランドのみにする原則 それ以前にメソッド設計する上で最低限守った方がよいルールをまとめてみました。 プロパティをメソッドの戻り値代わりに使ってはいけない ファンクションメソッドでプロパティの値を変更してはいけない プロパティをリターンしない インスタンス変数やプロパティをメソッドの引数に渡さない 参照渡の引数をリターンしてはいけない 例外処理を GoTo 文の代わりに使ってはいけない 理由なく id 型をメソッドの戻り値にしない 特定メソッドの呼びだしが前提になったメソッドを作ってはいけない パブリックメソッドからパブリックメソッドを呼ばない プライベートメソッドからパブリックメソッドを呼ばない 以下その詳細です。 プロパティをメソッドの戻り値代わりに使ってはいけない メソッドが呼

    メソッド設計で守るべき10個のルール - A Day In The Life
    tototti
    tototti 2010/07/24
    objective-c(に限らず他の言語でも)のメソッド設計について。してはいけないことまとめ。
  • タイマーを使って電子コンパスの動きを滑らかに見せる方法 - A Day In The Life

    iPhone 3GSの電子コンパスは角度が変わったときに値を取得することができます。AR系アプリや地図アプリなんかでコンパスの値と連動させてUI部品の位置を変更する場合、角度が変わるタイミングでUI部品を動かすとどうしても動きが「カク」っとなってぎこちない感じになってしまいます。 そこでこの「ぎこちない」動きをタイマーを使って滑らかにする方法を紹介します。 サンプルプログラムの概要 方位磁石っぽい画像を使った簡単なコンパスアプリです。端末の向いている方角によって方位磁石画像が回転します。 ポイントはCLLocationManagerのlocationManager:didUpdateHeading:メソッドのタイミングで画像の回転を行わず、NSTimerを使って一定時間経過ごとに少しづつ画像の角度を変化させるところです。タイミング図で表すと下のようになります。 ヘッダのコード compas

    タイマーを使って電子コンパスの動きを滑らかに見せる方法 - A Day In The Life
    tototti
    tototti 2010/05/10
    なるほど。コンパスの値に急に動かすのではなく、タイマーで徐々に動かすと綺麗に。
  • AndroidとiPhoneの加速度計アプリの実装方法を比較してみる - A Day In The Life

    大きな違いとしてはiPhoneの場合加速度計のみ管理しているのに対してAndroidは他のセンサー(温度計や磁気センサーなど)と一括りにして管理しています。またiPhoneでは加速度計オブジェクトを直接取得できるのに対しAndroidでは加速度計オブジェクトを取得することができません(Android1.5からSensorクラスが追加され加速度計オブジェクトを取得できるようになりました)。 iPhoneの場合 UIAccelerometerDelegateプロトコルを実装したクラスに加速度イベント(accelerometer:didAccelerate:メソッド)を実装する UIAccelerometer#sharedAccelerometerメソッドで加速度計のオブジェクトを取得する UIAccelerometer#delegateを設定すると加速度イベントが発生する ローパスフィルター(

    tototti
    tototti 2010/04/15
    high-pass / low-passフィルタ。
  • 質問をすることで答えは変更されない原則 - A Day In The Life

    メイヤー著「オブジェクト指向入門 第2版 方法論・実践」でクラス設計の面白い原則があったのでまとめてみました。 前提 クラスの特性にはクエリとコマンドがある。 クエリ 属性 ファンクション(戻り値のあるメソッド) コマンド プロシージャ(戻り値のないメソッド) ファンクションに副作用があってはならない ファンクションの副作用とはファンクション呼び出しによって属性の値が変更されること。 たとえばNumberというクラスがあって multiplyメソッドを呼ぶとvalue属性の値が変わる場合、副作用があるという。 ファンクションに副作用があると 数学におけるファンクションと意味が違う 参照透過性が消失する という問題が発生する。このことからファンクション設計時には以下の行為は避けるべきである。 プロシージャの呼び出し 属性に代入 生成命令(コンストラクタ呼び出し) プロシージャでは積極的にオブ

    tototti
    tototti 2010/02/11
  • 1