スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


このエントリーをはてなブックマークに追加

NSThreadで時間がかかる処理を非同期処理する

画像処理など、時間がかかる処理を実行する時には、インジケータや進捗バーなどを表示しておき、重い処理を別スレッドで実行させる方法が有効。

どんな言語でもマルチスレッドプログラミングは厄介だけど、バックグラウンドで重い処理をさせる程度の目的なら簡単に実装できる。

まずは、インジケータや進捗バーを表示させる。ついでに、処理中に押されてはならないボタン等を使用不可にしておく。この辺りの処理は、アプリ固有の動作なので、下のソースは参考程度に。(そのままじゃ当然動きませんよ~)


// インジケータを表示
[m_indicator startAnimating];

// 戻るボタンを使用不可にする
btnReturn.enabled = NO;


そしてここからが本題。

まずは処理を行うスレッドを生成する。この処理を実行すると、xxxThread関数がメインスレッドと並行して実行される。処理自体は別スレッドなので、終了を待つ事なく、呼び側には即座に制御が返る。


[NSThread detachNewThreadSelector:@selector(xxxThread)
    toTarget:self
    withObject:nil];



そして、処理を行う関数を実装。


// 処理スレッド
- (void)xxxThread {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    ~ここにメイン処理を書く~

    // 戻るボタンを使用可にする
    btnReturn.enabled = YES;

    // インジケータを非表示にする
    [m_indicator stopAnimating];

    [pool release];
}


ここで重要なのが、関数の先頭と末尾に記述しているAuto Release Poolの処理。
スレッド関数では自動的に解放処理をしてくれないので、必ず実装する必要がある。

ちなみに、マルチスレッド処理といえば、業務でいつも苦戦を強いられるので個人的には避けたいシロモノ。謎のデッドロックに陥ったり、年に数回しか発生しない微妙なバグが発生したり・・・。問題が起きた時にはとにかくデバッグしにくい。特に、絶対に落ちてはいけない業務システムなんかで発生したらもう最悪・・・。

まっ、今回は、そんな複雑なことは考えなくて良さそうなので、とりあえず使ってみました。


このエントリーをはてなブックマークに追加

コメント

非公開コメント

iPhoneアプリ紹介
パズルナビ for パズドラ 2016
最強のコンボツール!
colorization-large-icon.png

スクリーンショットを読み込むとコンボを自動計算してくれるパズドラの攻略アプリです。


AirRuler
(簡易距離計)

リモートで簡単に距離を測定できるアプリ!
colorization-large-icon.png

目標地点に向けてiPhoneを傾けるだけで簡単に距離を測定できます。ゴルフの距離測定機能付きパターの代わりにも使えます。


補色残像アート
~見えない色が見えてくる~
白黒なのにカラーに見えてしまう不思議な映像を体験しよう!
colorization-large-icon.png

補色残像という目の錯覚を利用して、白黒写真がカラーに見える不思議な映像を作成できます。作成した映像は、アニメGIFに変換したり、Twitterに投稿することもできます。


タイピング革命
フリック練習はタイピング革命で!ネットランキングで盛り上がろう!
icon-l-typing.jpg

オンラインランキング上のプレイを閲覧できるリプレイ機能付き!フリック入力とローマ字入力に完全対応したタイピング練習アプリです。初心者も安心のトレーニングモード付き。

★なんと!あのAppBank様に紹介して頂きました!!
typing-sale-led.gif


簡単3Dカメラ
iPhoneで手軽に3D写真を楽しもう!平行法/交差法/アナグリフ/グラグラ3Dに対応。
icon-l-3d.jpg

2枚の写真を撮影するだけで、裸眼で立体視できる3D写真が作成できます。85円でステレオ写真もアナグリフも楽しめるのは簡単3Dカメラだけ!

プロフィール

あらきんぐ☆

Author:あらきんぐ☆
はじめまして。あらきんぐです。
4月からiPhoneを購入し、その魅力に取り付かれて、気がついたらアプリ開発の道へ!仕事でプログラム開発をしていますが、基本「動けばOK!」な適当エンジニアです。適当でもアプリは作れる!っていう事を、ブログを通じて証明していきたと思います。

最新記事
最新コメント
最新トラックバック
カテゴリ
FC2カウンター
全記事表示リンク

全ての記事を表示する

Twitter
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
アクセスランキング
[ジャンルランキング]
コンピュータ
487位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
72位
アクセスランキングを見る>>
オススメ商品
iPhone/iPodと一般オーディオを繋ぐ貴重なアイテム!
アプライドオリジナルアイテム MBB...

アプライドオリジナルアイテム MBB...
価格:3,980円(税込、送料別)

開発中級者にオススメ!「こんなことができるんだ!」と驚かされる一冊
【送料無料】iPhone...

【送料無料】iPhone...
価格:1,500円(税込、送料別)

安い!シンプル!カッコいい!
希少なiPhone対応キーボード内蔵ケース
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。