Açıklık için silinecek öğeleri topladığım bir başlangıç döngüsü oluşturmayı seviyorum. Sonra onları silerim. İşte Objective-C 2.0 sözdizimini kullanan bir örnek:
NSMutableArray *discardedItems = [NSMutableArray array];
for (SomeObjectClass *item in originalArrayOfItems) {
if ([item shouldBeDiscarded])
[discardedItems addObject:item];
}
[originalArrayOfItems removeObjectsInArray:discardedItems];
Ardından, endekslerin doğru bir şekilde güncellenip güncellenmediği veya diğer küçük defter tutma detaylarıyla ilgili bir soru yoktur.
Eklemek için düzenlendi:
Diğer cevaplarda ters formülasyonun daha hızlı olması gerektiği belirtilmiştir. yani dizi boyunca yineleme yapar ve atılacak nesneler yerine saklanacak yeni bir nesne dizisi oluşturursanız. Bu doğru olabilir (yeni bir dizi ayırmanın ve eski diziyi atmanın bellek ve işleme maliyeti ne olursa olsun), ancak daha hızlı olsa bile, saf bir uygulama için olduğu kadar büyük bir anlaşma olmayabilir, çünkü NSArrays "normal" diziler gibi davranmayın. Konuşmayı konuşuyorlar ama farklı bir yürüyüş yapıyorlar. Burada iyi bir analize bakın:
Ters formülasyon daha hızlı olabilir, ancak bunun olup olmadığına hiç dikkat etmemeliydim, çünkü yukarıdaki formülasyon her zaman ihtiyaçlarım için yeterince hızlıydı.
Benim için eve götüren mesaj size en açık formülasyonu kullanmaktır. Yalnızca gerekirse optimize edin. Kişisel olarak yukarıdaki formülasyonu en açık şekilde buluyorum, bu yüzden kullanıyorum. Ancak ters formülasyon sizin için daha açıksa, bunun için gidin.