Re: Objects cross calls
Re: Objects cross calls
- Subject: Re: Objects cross calls
- From: theo <email@hidden>
- Date: Mon, 23 Jan 2006 15:42:48 +0000
Just release aFruit, after setting it into the array.
That'll mean that when you remove it from the array, it'll get
automatically dealloced.
On 23 Jan 2006, at 15:18, Lorenzo wrote:
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:
40westcliffdata.co.uk
This email sent to email@hidden
_______________________________________________
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