タグ

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

  • BBAsyncTask その4 - Kazzz's diary

    非同期どころかexecuteInBackgound:はメインスレッドで動作してしまうのでexecuteInBackgound:の意味が無い。 次回はこの肝心要の非同期処理=別スレッドでの処理実行と他の処理との同期を実装していこう。 Objective-C、iOS上でのスレッドによる非同期処理はいくつかの世代があるが、今回はGrand Central Dispatch(以降GCD)による物を使うことにした。 理由は簡単でGCDは「最も新しく」「最も効果的で」「最も簡単に」マルチスレッド処理を記述できるからだ。 マルチスレッドによる非同期処理をいろいろな言語で書いて来たが、スレッドが一増えるとそれだけでプログラミングは途端に面倒になるし処理効率も下がってしまう。それはスレッドという流れがブロックしない処理を扱うことは勿論だが、もう一つGUIアプリケーションの場合非同期処理が実行されるスレッド

    BBAsyncTask その4 - Kazzz's diary
  • Objective-Cの一寸残念な所 - Kazzz's diary

    2ヶ月程度Objective-Cを勉強してきたが、少しずつその特徴が見えてきた。 カテゴリやプロトコル等、素晴らしい点がたくさんあるのだが、同時にいくつかの残念だとと思う点も見えてきた。 C言語であること Objective-CはJavaやC#等のようにCのシンタクスをベースにしているものの、設計を1から行った言語などとは違いあくまでC言語が下地になっている。 objc-class.mやobjc-runtime.mのソースコードを見れば判るが、低レベルな処理はC言語やアセンブラで書かれており、そこの部分を調べるにはC言語の基礎知識が必要であり、敷居は低くない。 スカラ型とオブジェクト型の相互変換 初期のJavaでも問題になったが、Cで元々サポートしているスカラ型とObjective-Cで扱うオブジェクト型は相互の代入互換性は無いため、これらのデータを交換するには相互変換が必要になる。(相互

    Objective-Cの一寸残念な所 - Kazzz's diary
  • Viewの回転対応とTabBarViewController - Kazzz's diary

    スマートフォン特有の画面の回転への対応だが、iOSでのプログラミングは非常に簡単だ。 iOSはデバイス毎に画面の大きさと解像度は固定と想定してよいので※、Androidのような「レイアウト」オブジェクトにより画面のリサイズが必要無いため、単純なビューの回転だけであればビューコントローラ(UIViewControllerクラス)の"shouldAutoRotateTointerfaceOrientation"メソッドの戻り値を対応する回転位置に合わせてYESにするだけである。 (Androidのようにライフサイクルが遷移してActivityへの参照が無効になってしまうのを避けるコードを書く必要も無い。) メソッドのパラメタ"toInterfaceOrientation"は許可する画面の向き(オリエンテーション)を定数で指定する。 UIInterfaceOrientationLandscape

    Viewの回転対応とTabBarViewController - Kazzz's diary
    Miyakey
    Miyakey 2012/03/19
    向きを変えると例外が発生して困ったが、なるほど回転を判定する場所が2ヶ所あったのに気づかずハマった。[iOS][*資料]
  • 1