• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Objects cross calls
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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

  • Follow-Ups:
    • Re: Objects cross calls
      • From: theo <email@hidden>
    • Re: Objects cross calls
      • From: Mont Rothstein <email@hidden>
References: 
 >Re: Objects cross calls (From: Pontus Ilbring <email@hidden>)

  • Prev by Date: Drag and drop differences between 10.3.9 and 10.4?
  • Next by Date: Re: Resizing an image
  • Previous by thread: Re: Objects cross calls
  • Next by thread: Re: Objects cross calls
  • Index(es):
    • Date
    • Thread