• 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
Accessor methods and (auto)release <Memory trail>
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Accessor methods and (auto)release <Memory trail>


  • Subject: Accessor methods and (auto)release <Memory trail>
  • From: Raphaël Delcroix <email@hidden>
  • Date: Wed, 31 Jul 2002 01:39:06 +0200

There seems to be a strange competition in all the documents on how to
implement accessor methods.

- (void) setValue:(Something *)newValue {
[value autorelease];
value = [newValue retain]; // or copy, OK.
}

seems to be the most current.

However, I read that :
"autoreleasing an object is an expensive operation" etc...
(http://www.stepwise.com/Articles/Technical/MemoryManagement.html)

All right then.
But am I sure that the instance variable is not used elsewhere ?
Because in that case I have to autorelease !

Then, the author proposes this code :
- (void) setTheory: (Theory *)newTheory
{
Theory *oldTheory = nil;

if ( theory != newTheory ) // If they're the same, do
nothing
{
[self willChange]; // For Enterprise Objects only
oldTheory = theory; // Copy the reference
theory = [newTheory retain];// First retain the new object
[oldTheory release]; // Then release the old object
}

return;
}

But this appears to be very strange.
Testing this object avoid to do this for none, and allow the use of
release, all that for optimisation.
All right.
But I understand less the use of a swap variable. This code would be
more simple :

- (void) setTheory:(Theory *)newTheory {
if (theory == newTheory)
return;

// [self willChange]; if necessary (I know nothing about that).
// but that's perhaps the reason of a so complicated manner ?

[theory release];
theory = [newtheory copy/retain];
}

So, what to do ?

R.D.
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.

  • Follow-Ups:
    • Re: Accessor methods and (auto)release <Memory trail>
      • From: Ondra Cada <email@hidden>
    • Re: Accessor methods and (auto)release <Memory trail>
      • From: Ali Ozer <email@hidden>
  • Prev by Date: Re: finder
  • Next by Date: Re: Strange table view need... howto sensibly?
  • Previous by thread: Re: Who is releasing my CFAllocator?
  • Next by thread: Re: Accessor methods and (auto)release <Memory trail>
  • Index(es):
    • Date
    • Thread