Re: File Extensions Problem
Re: File Extensions Problem
- Subject: Re: File Extensions Problem
- From: "Michael Ash" <email@hidden>
- Date: Fri, 22 Aug 2008 11:23:09 -0400
On Fri, Aug 22, 2008 at 6:23 AM, Graham Cox <email@hidden> wrote:
> -reverseObjectEnumerator is no different, because it "lets you access each
> object in the receiver, in order, from the element at the highest index down
> to the element at index 0". This statement will hold true for any future
> implementation of NSMutableArray, meaning that it is now, and always will be
> safe to delete items in the array at or higher than the current index. By
> the definition of an array, removing an item only affects the indexes of
> objects with equal or greater indexes than the removed item.
You are making a big, unwarranted assumption about how
reverseObjectEnumerator works. Namely, you are assuming that it merely
tracks an index, and uses -objectAtIndex: (or equivalent) to retrieve
each object.
What if the enumerator actually just keeps a pointer to the array's
internal storage? This would be perfectly allowed by the API. But
then, as you delete things, the array may decide to reallocate its
internal storage, leaving the enumerator's pointer to dangle, and
causing you to crash.
Do not modify collections while you enumerate them. You're not allowed
to. Just because it seems like maybe you ought to be allowed in this
one special case doesn't make it so.
If you really want to enumerate backwards while deleting items at the
tail end of the array, write a manual for loop that calls
-objectAtIndex: each time. This is guaranteed to work.
Mike
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden