タグ

NSOperationに関するrabbit2goのブックマーク (9)

  • NSOperation 非並列実行モードと並列実行モードの使い分け - A Day In The Life

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

    NSOperation 非並列実行モードと並列実行モードの使い分け - A Day In The Life
  • Cocoa Is My Girlfriend ≫ Blog Archive ≫ NSOperation Example

    Forget Mandelbrot sets (Apple coding headstarts) and Expression Trees. NSOperation is really not that hard. In his post, Marcus introduced how to use NSOperation to greatly simplify multi-threading tasks in your application. I am now going to provide a step-by-step walk-through sample application that uses NSOperation, NSOperationQueue, and QTKit. While looking around the Internet, I noticed that

  • NSOperationQueue スレッドと処理の関係 - A Day In The Life

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

    NSOperationQueue スレッドと処理の関係 - A Day In The Life
  • 『iOS4にしたらNSOperationが動かなくなったときの解決法』

    iPhone SDK4.0になり、マルチスレッド関連にもかなりの変更が加えられました。その一つの影響として、NSOperationの仕様も変わっています。 何も考えずにisConcurrentをYESにして組んでいたアプリはiOS4では動かなくなる可能性があります。 最も影響を受けるのは、NSURLConnectionによるHTTPリクエストをNSOperationを使っていた場合でしょう。NSURLConnectionをマルチスレッドで使うには、かなり丁寧に実装してあげないと動かなくなります。 手っ取り早いのはNSOperationQueueの生成を以下のように明示的にメインスレッドの呼び出しに変更することです。 // alloc,initは、iPhone3.xでisConcurrent=NOの時、およびiOS4では別スレッドで起動される // iPhone3.xでisConcurren

    『iOS4にしたらNSOperationが動かなくなったときの解決法』
  • iOS4 Issue: NSURLConnection and NSOperation | MKBlog

    Everyone knows NSOperation is easily the best way to automatically gain powerful multi-threading on iOS/Mac platforms. However, recently for one of my apps, I faced a issue where, the NSURLConnection’s initWithRequest method doesn’t automatically start even if you forcefully send the “start” message. For example the below code works perfectly on iPhone OS 3.1 and below but fails on iOS 4. - (void)

    iOS4 Issue: NSURLConnection and NSOperation | MKBlog
  • NSOperation を使って外部 API から非同期に結果を取得してみる

    iPhone / iPad のアプリを作っていると、頻繁に登場するのが「外部 API を HTTP 経由で実行して結果を XML / JSON で取得し、それを解析してモデルクラスに変換してデータ構造に突っ込む」パターンです。当然たくさんの先人の皆様がすでに効率的なライブラリを作成されているのですが、あえて私も車輪の再発明に挑戦してみました。今回使用したのは NSOperation クラスです。 NSURLConnection クラスとデリゲートを使うだけでも簡単に非同期通信を実現することができるのですが、さらに NSOperation クラスと NSOperationQueue を使うことでさらにタスク間の依存関係を簡単に設定できたり、タスクの並列度を簡単に制御したりできそうなので、挑戦してみました。 2010/12/29追加: 発展版をASIHTTPRequestを使って作成してみまし

  • GCDを試してみる : As Sloth As Possible

    Rubyと比べながらBlocksをいじってみたり、BlocksでNSArrayにmapメソッドを生やしてみたりしてきたので、そろそろGrand Central Dispatch(GCD)も試してみる。あんま関係ないけど、グランド・セントラル・ディスパッチってなんか必殺技っぽいよね。じゃあ一緒に高らかに叫んでみようか。せーの、グランド!セントラル!ディスパッチ!! GCDってなにさ ドキュメント嫁。 …だけだと流石に不親切なので、一応簡単に説明すると、APIを通してぽんぽん処理をqueueにつっこんでってやると、ランタイムの方でそれを上手いこと並列実行しといてやるよ!安心しろチェリーボーイ共、スレッドのことは俺が面倒見てやるぜ!って仕組み。そんな口調なのかどうかはわかんないけど、まぁ大体そんな感じ(適当)。 例によってRubyと比較 まぁ、こんなコードがあったとします。 # ruby f =

    GCDを試してみる : As Sloth As Possible
  • 無為空間 |NSOperationQueueとスレッドの関係

    無為空間 むいむい(´ω`*) Entries NSOperationQueueとスレッドの関係 タグ: Objective-C Mac NSOperation NSOperationQueueを使ったプログラムをデバッグしていてふと気付いたのだが、NSOperationQueueは何もクソ真面目に「concurrentではない全てのoperationのために毎回スレッドを作っている」わけではないらしい。 例えば以下のコード。 @interface Operation : NSOperation { int number; } @property (nonatomic) int number; @end @implementation Operation @synthesize number; - (void)main { [NSThread sleepForTimeInterval:1]

  • NSOperationによるバックグラウンド処理 - Objective-Audio

    NSOperationってCoreAnimationみたいな派手な機能と違って、あまり解説されていない気がするので、使い方を書いておきます。オーディオのアプリケーションでも、読み込んだオーディオファイルの波形の画像をバックグラウンドで作っておいて、出来上がったら表示するみたいな事にも使えると思いますので。(※2008/5/12 記事にNSInvocationOperation等いろいろ修正を加えています。GCなしにも対応のはず。) NSOperationを使う NSOperationのサブクラスのmainメソッドにバックグラウンドで行いたい処理を記述しておき、そのインスタンス(以後、オペレーション)を作成して、NSOperationQueueのインスタンス(以後、キュー)のaddOperationメソッドに渡すと、あとは勝手にバックグラウンドで処理してくれます。キューへ渡した後にオペレーシ

  • 1