2012-01-04 4 views
2

Я новичок в Obj-C и Cocoa и пытаюсь выяснить, как сделать отсортированный список объектов до и после ARC.Связанный список объектов какао

Мой класс был бы что-то вроде

@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' использует структуру данных резервного копирования того же типа, что и' ArrayList' в Java, что делает произвольные вставки и удаления неэффективными? Я не говорю, что это так, но это может быть одной из причин желания создать собственный связанный список. – aroth

+3

NSArray имеет очень ... интересную реализацию, http://ridiculousfish.com/blog/posts/array.html - очень хорошее чтение. Лучшая цитата, относящаяся к этому конвою: «Не сомневайтесь, Apple, потому что Apple уже второй раз догадалась о вас. В лучшем случае, конечно». –

ответ

6

Код будет идентичным, за исключением ARC, вы просто удалите строку 'release'. Компилятор неявно добавит его для вас как часть компиляции ARC. Доверяйте этому, чтобы поступать правильно.

Смежные вопросы