Как вы удаляете объект из массива? - PullRequest
1 голос
/ 21 июля 2009

Мне было интересно, как вы удаляете объекты из NSMutableArray, потому что сейчас я использую [astroids removeFromSuperview];, но он просто избавляется от изображения на экране, но сам экземпляр все еще присутствует даже после удаления.

Ответы [ 3 ]

14 голосов
/ 21 июля 2009

-removeFromSuperview - это метод UIView, а не NSMutableArray. Кажется, что экземпляр UIView, который вы вызываете, также хранится в MSMutableArray. Вам нужно будет использовать один из методов NSMutableArray для удаления объектов из самого массива.

Необходимо удалить его в массиве отдельно, поскольку он также владеет рассматриваемым объектом и сохранил его независимо от его использования в другом месте.

NSMutableArray Методы для удаления объектов:

– removeAllObjects  
– removeLastObject  
– removeObject:  
– removeObject:inRange:  
– removeObjectAtIndex:  
– removeObjectsAtIndexes:  
– removeObjectIdenticalTo:  
– removeObjectIdenticalTo:inRange:  
– removeObjectsFromIndices:numIndices:  
– removeObjectsInArray:  
– removeObjectsInRange:

См. http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/nsmutablearray_Class/index.html

1 голос
/ 21 июля 2009

NSMutableArray содержит сообщение removeObjectAtIndex.
Документация NSMutableArray

0 голосов
/ 21 июля 2009

Предположим, что вы удаляете представление из его суперпредставления, тогда removeFromSuperview не отправляет сообщение release вашему представлению, что приведет к его немедленному освобождению (если нет другого объекты сохранили его).

Вместо этого он отправляет сообщение autorelease . Это приводит к тому, что представление фактически удаляется из памяти в конце цикла выполнения, а не сразу после вашего сообщения removeFromSuperview .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...