• 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: 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
References: 
 >Re: Objects cross calls (From: Lorenzo <email@hidden>)

  • Prev by Date: Re: Objects cross calls
  • Next by Date: Re: location of text in NSTextView
  • Previous by thread: Re: Objects cross calls
  • Next by thread: Re: Objects cross calls
  • Index(es):
    • Date
    • Thread