2012-01-04 2 views
2

Obj-CとCocoaの新機能で、ARCの前後にオブジェクトのソートされたリンクリストを作成する方法を理解しようとしています。Cocoaオブジェクトのリンクリスト

私のクラスでは、ノードのリストをスキャンし、ノードのvalueプロパティを比較することにより、挿入ポイントを見つけることによってなされる何か新しい項目を入力する

@interface Node : NSObject 
{ 
    int value; 
    NSValue *item; 
    Node *next; 
} 

property (strong, non atomic) value; 
... 

ようなものです。 問題が発生するのは、リストから項目を削除したいときです。私のコードは

... 
Node *prevPtr = nil; 
Node *curPtr = head; 
while (curPtr != nil) { 
    if (some-condition) { 
     prevPtr.next = curPtr.next; 
     [curPtr release]; // cannot do with ARC 
    } 
} 
  1. のようなものがココアと互換性のあるこのコーディングパターンがありますか?
  2. ARCの下で、私のオブジェクトはどこで解放/割り当て解除されますか?
+0

NSMutableArrayを単に使用するのではなく、あなた自身のリンクリストを書く必要があるのはなぜですか? –

+0

NSMutableArrayは、Javaの 'ArrayList'と同じタイプのバッキングデータ構造を使用しているため、任意の挿入と削除が非効率的なのでしょうか?私はそれがそうであると言っているわけではありませんが、それはカスタムリンクリストを実装したいという理由の一つになります。 – aroth

+3

NSArrayは非常に興味深い実装を持っています。http://ridiculousfish.com/blog/posts/array.htmlは非常に読みやすいです。それはこのコンボに関連して最高の引用 "Appleは、すでに第二にあなたを推測しているので、二度とAppleを推測しないでください。もちろん、良い方法で。 –

答えて

6

「リリース」行を削除するだけで、ARC以外のコードは同じになります。コンパイラは暗黙的にARCコンパイルの一部としてそれを追加します。正しいことをするためにそれを信頼してください。

関連する問題