タグ

ブックマーク / kazzz.hatenablog.com (4)

  • deallocを明示的に書くこと - Kazzz's diary

    ARCの素晴らしい所はretain/releaseをコンパイラとランタイムが面倒を見てくれるお陰で、プログラマの負担が大幅に減ることだが、だからといってオブジェクトの参照と解放に対して無神経になって良い訳ではない。 以前にも書いたがARCは自らretain/releaseを書くことが許されていないので、思わぬ所で意図せずオブジェクトが確保/解放されている場合がありこれがバグを非常に解り難くしている。※ いつオブジェクトが解放されているかを知るためにはdeallocが動作していることを確認すれば良いわけで、ここから、まだ半年にも満たないObjective-Cプログラマ経験から 「デバッグで困ったらdeallocを明示的に書くべし」 という経験則が適用できる。 deallocを書くのは簡単だ。全てのクラスでdeallocメソッドをオーバライドできる。 - (void)dealloc { //後

    deallocを明示的に書くこと - Kazzz's diary
    koogawa
    koogawa 2014/02/26
  • Xcode 4.3でスタティックリンクライブラリィを扱う (その2 - Kazzz's diary

    さて、今日はアプリケーションからスタティックライブラリをリンクする設定を行う手順をまとめる。 外部のライブラリィを自分のプロジェクトに組込む等、普段はこちらのほうが有用だろうか。 2.アプリケーションプロジェクトでスタティックリンクライブラリを組み込む アプリケーションプロジェクトにスタティックリンクライブラリプロジェクトを追加する まずは対象となっているアプリケーションのプロジェクトに、先日作ったスタティックリンクライブラリ用のプロジェクトを追加する。 方法は「Add Files to〜」で使用するライブラリのプロジェクト(xxxx.xcodeproj)を追加するだけだが、実はここが重要で、私はここで追加の方法の選択を間違っていたために失敗していたのである。 Xcode4.xの「Add Files to〜」によるプロジェクトへのファイル追加は対象となるディレクトリの扱いに関して二通りある

    Xcode 4.3でスタティックリンクライブラリィを扱う (その2 - Kazzz's diary
  • TouchEventをGestureDetectorで置き換える - Kazzz's diary

    拙作のカレンダビューに関して、以前にフリック・モーションで月を変えることに言及した。 ViewFlipperによるビューの切替えとアニメーション 実装としてはこれでOKだと思っていたのだが、いざ実機でテストしてみると腑に落ちない振る舞いをする。 現象 左右のフリック・モーションが認識されないことがある。(不定期) 実装は以前にエントリに書いたように、ViewFlipperクラスのonTouchEvent中のアクションの切替え時に、タッチされてからの移動変量を閾値として次月又は前月に移動することで実装している。 ViewFlipper#onTouch抜粋 protected float lastTouchX; @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { c

    TouchEventをGestureDetectorで置き換える - Kazzz's diary
    koogawa
    koogawa 2011/09/11
    「GestureDetectorにViewのonTouchEventを委譲することにより、より抽象度の高いジェスチャを捕捉することができる」
  • バックグラウンドスレッドでダイアログを生成してはいけない - Kazzz's diary

    AndroidではUIスレッド上でGUI部品(ウィジェット)にアクセスするのが前提になっているため、他のスレッドでGUIにアクセスするとチェックが入り例外が発生する。 android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. これを回避するためにはいろいろな方法があるが、一つはAsyncTaskの派生具象クラスを使ってスレッドでの処理とUIスレッドでのGUI処理を明確に分離することだ。 final AsyncTask at = new AsyncTask() { @Override protected Bitmap doInBackground(String... params) { ret

    バックグラウンドスレッドでダイアログを生成してはいけない - Kazzz's diary
    koogawa
    koogawa 2011/08/27
    起動時にクラッシュする原因はこれかもしれぬ
  • 1