Re: Objects cross calls
Re: Objects cross calls
- Subject: Re: Objects cross calls
- From: Lorenzo <email@hidden>
- Date: Mon, 23 Jan 2006 16:18:44 +0100
The problem is that I cannot delete the fruit from the basket in the fruit
dealloc method this way
- dealloc
{
[basket removeFruit:self];
[super dealloc];
}
in fact when some part of my app deletes a fruit, e.g.
[fruits removeObjectAtIndex:4];
since the retain count was 2 before the removeObjectAtIndex call,
the dealloc method doesn't get called.
I should remove a fruit with my own method like
- (void)deleteFruit:(int)index
{
aFruit = [fruits objectAtIndex:index];
[[aFruit basket] removeFruit:aFruit];
[fruits removeObjectAtIndex:index];
}
This begins to be complicated if you think that some call could remove all
the fruits or even release the fruits array like these calls
[fruits removeAllObjects];
[fruits release];
What to do in case of these 2 calls above?
I think there should be a more efficient method than cross-connecting the 2
objects. I though about relational database and record IDs but I am afraid
that is not the right approach.
What's about creating an array with simple pointers of the fruits?
Best Regards
--
Lorenzo
email: email@hidden
> From: Pontus Ilbring <email@hidden>
> Date: Mon, 23 Jan 2006 14:51:33 +0100
> To: Lorenzo <email@hidden>
> Cc: email@hidden
> Subject: Re: Objects cross calls
>
> On 1/23/06, Lorenzo <email@hidden> wrote:
>> Hi,
>> how should I work with objects referring each other in a cross way?
>
> Very, very carefully, that's how. You seem to have figured that out already.
>
> For your situation I would suggest a very simple solution. When you
> remove an object from the fruits array, tell -all- baskets to remove
> it as well. There's no harm in trying to remove an object from an
> array which doesn't contain it.
>
> If you don't need them ordered then you should also consider changing
> the baskets to use sets instead of arrays, as they are much more
> efficient when you want to remove arbitrary objects.
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden