Hello Clark, The objects in the set are NSObject subclasses that have a NSString readonly property (messageId) and are always initialized through initWithMessageId: where that value is set and never changed.
The hash and isEqual methods are as follows: - (NSUInteger)hash{ return (messageId == nil) ? [super hash]:[messageId hash]; } - (BOOL)isEqual:(id)object{ if([self messageId] == nil)return [super isEqual:object]; if([object isKindOfClass:[RTMessage class]]){ return [[self messageId] isEqualToString:[object messageId]]; } if([object isKindOfClass:[NSString class]]){ return [[self messageId] isEqualToString:object]; } return [super isEqual:object]; } This basically allows me to do something like [messageSet member:@"123"] and return the object with ID 123 or [memberSet member:messageObject] and have the same result. This is the first condition I checked when the problem started presenting itself but since messageId is readonly and retained then it shouldn't ever change through the lifetime of the object once created and added to the set. This is the condition that the docs say must be ensured. Thanks for your response, Alejandro RodrÃguez On Mar 16, 2010, at 1:46 PM, Clark Cox wrote: > On Tue, Mar 16, 2010 at 10:28 AM, Alejandro Rodriguez > <l.mephi...@gmail.com> wrote: >> Hello All, >> >> I am using NSMutableSet quite extensively in my app mostly just >> adding items to it and reading them (almost never removing). However >> sometimes it crashes under very interesting conditions. I can't reliable >> recreate the issue but sometimes I get a 'attempted to insert nil' exception >> when FILTERING the set using a predicate, if I breakpoint at this exception >> and print the set description I see that it has many valid objects but also >> a bunch of nil (null) objects which doesn't make any sense since I can't >> insert nil objects to the set in the first place! >> >> I can't think of any scenario where I can insert nil objects to the >> set or insert a valid object which would then point nil. My app is >> multi-threaded and the set is accessed in @sychronized blocks from many >> threads all the time. >> >> Has anyone had a similar problem? am I missing something? is it a >> bug with the foundation object? > > > What kind of objects are in the set? What do their -isEqual: and -hash > methods look like? Is there any possibility that objects in that set > are changed in a way that affects the results returned by their > -isEqual: and/or -hash methods? > > -- > Clark S. Cox III > clarkc...@gmail.com _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com