|
|
1. はじめに
Memory Management Test 第1回は現在制作途中です。完成までに大幅な変更等があるかもしれません。
ご了承ください。
はじめに
Memory management もしくは Maneged memory という言葉は「メモリー管理」と訳されると思います。Memory management や Maneged memory という言葉がアップルのガイドラインの中に出てきた場合はメモリー解放に関するガーベジコレクションやリファレンスカウンターのことを指しているのではなくアプリケーション全体に割り当てるメモリーやアプリケーションが終了した場合のメモリー回収およびスワップメモリーの管理のことなどを表しているものだと思います。しかしこのコーナーでは「メモリー管理」という言葉をガーベジコレクションやリファレンスカウンタ方式などの「メモリー解放システム」のことを表している言葉として話しをすすめていきたいと思います。
目 的
ガーベジコレクションのバグの確認と、本当にバグっていた場合には「自己紹介器」をリファレンスカウンター方式に移行することを目的としています。なおバグの有無に関わらず「自己紹介器」には新しい機能を追加し、バージョンを 2.0 にしたいと思います。
対象者
このサイトの「learn C」「learn ObjC Lite」「Cocoa GUI App」を終了された方、もしくは同等の知識をお持ちの方。なお「learn ObjC」も読まれていることを推奨いたします。
手 順
1. 本日2008年10月12月現在の最新バージョンである Mac OS X 10.5.5 にインストールされている Xcode 3.1 を使って「自己紹介器」プロジェクトを1から新しく作り直す
2. その際に自己紹介文の表示部分および記入部分を TextField から TextView に変更する
3. 最初にガーベジコレクションでコンパイルし実行してみる。なんら不具合が起こらないようであればこのテストはこの時点で終了し新しくビルドされた「自己紹介器」をバージョン2としてリリースする
4. 不具合が出ればリファレンスカウンタ方式でコンパイルし直す。リファレンスカウンタ方式に直す場合には一番簡単な方法を採用する。もしこれで不具合が直れば今後しばらくはガーベジコレクションの採用は控える
5. 4まで進んだ場合にリファレンスカウンタ方式の説明をするコーナーを新たに追加するかどうかは未定
ことのはじまり
8月下旬のことでした。Cocoa GUI App もなんとか書き終わってホッとしていた私は、Onbjective-C の大家として有名な先生の講演を聞きに行きました。講演の内容は非常に素晴らしく大変感激いたしましたが、その中に非常に気がかりな話しが出てきました。
「ガーベジコレクションは View という名前の付く GUI パーツを使う場合にバグが出るみたいですね。特に TextView を使う場合に」と
それを聞いた私は「ガビ〜ン。そうだったのか」と思いました。私には思い当たるフシが十分にあったからです
自己紹介器での不具合
自己紹介器で自己紹介文の記入や表示部分がもっと多くの文字数、つまり複数行の記入や表示に対応していたら良いのになぁと思われた方は多いと思います。「ま、サンプルだから。取りあえずこれで良いか」となんとなく納得されたのではないかと思います。しかし当初、私の予定では複数行の記入・表示に対応させる予定でした。この複数行の文字列の記入・表示に対応している GUI パーツが TextView と呼ばれるものです。
ところがこの TextView を使ってみるとどうしても予想外の動きをしました。別にはじめて TextView を使う訳でもないので使い方に間違いある訳でもないだろうとは思いましたが、7時間ほど色々調べながらなんだかんだとやってみましたがやはりダメでした。そこで仕方なく1行だけの記入・表示に対応している TextField を使うことにし TextView についてはまた時間のある時に調べなおしておこうと思いました。あの自己紹介器は2・3時間で完成したと言いましたが、この TextView のことで悩んでいた時間を入れるとほぼ1日かかったことになります :-)
真の姿を求めて
しかし先生の講演に言ったおかげでアッサリと原因が分かってしまったことになります。
(まだ試していないので確かにとは言えませんが)
ではさきほどの手順1.〜3.に従い、まずはガーベジコレクション + TextView の自己紹介器を作ってみます
しばらく間お待ちください。
お疲れさまです。Memory Management Test 第1回はまだ続きます。
|
|
|