タグ

2009年4月23日のブックマーク (6件)

  • Objective-Cのメモリ管理がわけわからなくなったとき:名称未設定2:So-net blog

    Mac OS X版 アフォなアプリ|KVCについて ブログトップ Objective-Cのメモリ管理がわけわからなくなったとき [Cocoa覚え書き] [編集] あふぉな私がメモリ管理がわけわからなくなったときのための覚え書き。 ○動的インスタンス生成 C++の場合は、new 、deleteで動的なインスタンスを生成、破棄する。 スコープ内でauto変数にnewの戻り値を代入してdeleteをするには問題ないが、newしたままスコープを出ると見失ってしまうので、クラスメンバかstaticな場所に置いておく。これは、C言語のalloc()系とfree()との関係と同じ。 Objective-Cの場合は、alloc、releaseでインスタンスの生成、破棄をする。 スコープ外へ出るときもC、C++ともに同様である。 ○基へ戻ってC言語のauto変数 auto記憶クラスは、スコープ内で有効であ

  • Objective-Cのメモリ管理 | Netsphere Laboratories

    (2009.1.28 新規作成) Objective-C は、ガベージコレクションがない時代のプログラミング言語です。プログラマがきちんとオブジェクトを解放するように書かなければなりません。 実装として、id 型は objc_objectへのポインタ型です。すべてのオブジェクトはmallocで確保されるイメージで、これはブロック内のローカル変数(のオブジェクト)を自動的に解放してくれるCより悪い状況です。 Objective-Cでは、自動解放プールと、ルールによるオブジェクトの解放で対処します。 gccにはライブラリが何も付いていないので、以降はGNUstepを前提とします。Fedora 10 Linux + gcc 4.3 で確認しました。 NSAutoreleasePool オブジェクトを生成したら自動解放プールに登録するようにします。自動解放プールが解放されるときに登録されたオブジェ

    kaza13
    kaza13 2009/04/23
  • releaseの使いどころ : As Sloth As Possible

    俺もメモリ管理を間違えて頻繁にアプリを落としてしまうゆとりプログラマなのであんまり偉そうなことも言えないのだけど、「releaseの使いどころ。メモリの辺りがどうしてもわからない。」を読んでいくつか思ったところがあるので書いときます。 「何度もinit」はしない 既に確保されているハズの変数を二度initするのはメモリリークだよね? 解放されている変数は、 if (obj == nil) では判別できないのだろうか。 ボタン押下時などに、同じロジックを走ることが多くて、何度もinitをしてしまうことが多いのだが。。。。 具体的なコードを見てないので間違ってるかもだけど、多分これ「何度もinitしちゃう」じゃなくて「開放してないオブジェクトを参照してる変数に、何度も新しいオブジェクトをつっこんじゃう」ってことだと思って話を進める(そうすると、どこからも参照が辿れないのにメモリが開放されてない

    releaseの使いどころ : As Sloth As Possible
  • http://homepage.mac.com/mkino2/spec/optimize/generation.html

  • Cocoaの素、Objective-Cを知ろう - @IT

    Objective-C初心者のための入門連載です。Objective-Cとは何かの基礎知識から、さまざまな基構文/文法(変数、データ型、nil、配列、プロパティ、アクセサ、クラス、スーパークラス、ルートクラス、サブクラス、ポインター、メソッド、インスタンス、リンク、ラッパークラス、コンパイラディレクティブ、id、メッセージ式、文字列操作、forなどの繰り返し(ループ)、列挙子、ディクショナリ(連想配列)、高速列挙、オブジェクト指向、継承、プロトコル、多重採用、セレクター、クラスクラスター、カテゴライズ、カテゴリ、メモリ管理、ガベージコレクション、参照カウンターなど)を、書き方が分かる豊富なサンプルコードとともに解説します。

    kaza13
    kaza13 2009/04/23
  • http://homepage.mac.com/mkino2/spec/optimize/allocation.html