Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Iterating NSSet (was Re: My new framwork)



On Mar 3, 2004, at 2:09 PM, Allan Odgaard wrote:

This seems straightforward enough:
Forwards:
unsigned currentIndex = [indexSet firstIndex];
while (currentIndex != NSNotFound)
{
//...
currentIndex = [indexSet indexGreaterThanIndex:currentIndex];
}
I should have added efficiently. I doubt that indexGreaterThanIndex: is O(1) and thus a bad idea for iterating large index sets, which is also hinted by the documentation for getIndexes:maxCount:inIndexRange:, which says: "Use this method to quickly and efficiently traverse an index set".

NSIndexSet internally caches last-accesses, allowing such enumeration (forwards or backwards) to happen very efficiently. The code snippet above should be good enough for most uses. A reason to switch to the get... variant is to avoid the message-sending overhead of the loop, in case that becomes an issue.

mmalc
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.


References: 
 >My new framwork (From: April Gendill <email@hidden>)
 >Re: My new framwork (From: John Randolph <email@hidden>)
 >Re: My new framwork (From: Allan Odgaard <email@hidden>)
 >Re: My new framwork (From: mmalcolm crawford <email@hidden>)
 >Re: My new framwork (From: Allan Odgaard <email@hidden>)



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.