• ブログ
  • ふぉとす
  • キーワード
  • ブックマーク
  • 写真
  • ログイン

Title

« 携帯写真を気軽にアップできるサイト「ふぉとす」を作りました | 今週のおやすみでやったこと »
  • 【iPhone】スレッド中で[UITableView reloadData]を使ってはいけない 2008-11-06 23:38:05

    iPhoneアプリでスレッドを使うとき、スレッド中でUITableView reloadDataを実行するとおかしなことになります。これはスレッドセーフではないからです。
    UITableViewCellで画像を外部から持ってくるときは非同期なりスレッドなりを使うと思いますが、画像取得後にUITableView reloadDataで更新しようとしてこの現象に出会いました。

    リンゴの水やり:performSelectorOnMainThread:... - livedoor Blog(ブログ)

    この記事にあるように、スレッド中でperformSelectorOnMainThread:withObject:waitUntilDone:modes:メソッドを使用してメインスレッド上で実行するようにしてあげれば解決できます。

    ImageCache.m - 画像取得用ライブラリ

    - (void) imageCache:(NSString*)url { // NSThreadでデタッチされるメソッド
        NSAutoreleasePool* pool;
        pool = [[NSAutoreleasePool alloc]init];
    
        NSData *data = .... // 画像データの取得処理
    
        if ([delegate respondsToSelector:@selector(imageCacheFinished)]) {
            [delegate performSelectorOnMainThread:@selector(imageCacheFinished) withObject:nil waitUntilDone:YES];
        }
    
        [pool release];
        [NSThread exit];
    }
    


    TableViewDelegate.m - TableViewのデリゲート

    - (void) imageCacheFinished {
        [self.tableView reloadData];
    }
    


    こんな感じ。

    Commentコメント(0) Pageリンク元(148) Append 628
  • 人間失格 (新潮文庫 (た-2-5))
    メディア: 文庫
    εに誓って (講談社ノベルス)
    メディア: 新書
« 携帯写真を気軽にアップできるサイト「ふぉとす」を作りました | 今週のおやすみでやったこと »

プロフィール

おおいしつかさ

Amazon商品の一覧

人気の記事ベスト10

  • 1.apache+mod_proxy_balancer+mongrelでRailsを動かす方法
  • 2.Perlでevalを使ってみる
  • 3.バージョン管理をsubversionからgitに移行してみた
  • 4.tokyobikeのドロップハンドル化
  • 5.restful_authenticationを使ってみた
  • 6.ubuntu8.04でデュアルディスプレイを使う
  • 7.URLなど、長い英字を折り返して表示する方法
  • 8.MySQLコンファレンス2008 2日目に参加してきました。
  • 9.RailsとPostfixで受信メールを処理する方法
  • 10.Rspecでコントローラのspecファイルを書く

コメント

  • おおいしつかさ(へぼ将棋にいそしむ)
  • 武石(へぼ将棋にいそしむ)
  • ユル(しろさん、小鳥を食べるの巻)
  • おおいしつかさ(今読んでいる本)
  • 武石(今読んでいる本)
  • ユル(プログラマが若隠居をしたら)
  • ユル(風邪ひいた)

過去の記事

2006年
12月
2007年
1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2008年
1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2009年
1月

キーワード一覧

ActionScript AmazonResources Erlang git javascript kaeruspoon milook NSR Objective-C Rails Ruby Ruby on Rails subversion Thin tokyobike ubuntu VAIO VAIO typeZ Waves Xen ぐりぐり カンタロー スノボー ドトール ドライブ バイク プログラミング ユルさん 執筆 日本酒 模型 真中洋嗣 自転車

Youtube

ニコニコ動画