Re: Alloc/dealloc etiquette
Sherm Pendley <[email protected]> Sat, 17 Feb 2007 17:50:38 -0500
| Newsgroups | gmane.comp.lib.gnustep.user |
|---|---|
| Message-ID | <[email protected]> |
David Phillip Oster <[email protected]> writes: > In article <[email protected]>, > David Phillip Oster <[email protected]> wrote: > >> In article <[email protected]>, >> Sherm Pendley <[email protected]> wrote: >> >> > - (void)setFoo:(NSObject *)value { >> > if (foo != value) { >> > [foo release]; >> > foo = [value copy]; >> > } >> > } > > Apologies. I was assuming a matching: > > - (NSObject *)foo{ > return foo; > } > > But, if you always write: > > - (NSObject *)foo{ > return [[foo copy] autorelease]; > } > > then my "swap" criticism doesn't apply. The example setter I posted was generated by Xcode, and it does indeed generate a getter to match, although using -retain rather than -copy. I should have posted both generated methods to avoid the confusion. Sorry! > However, I often want access to > an object's part, not a transient copy of the part. (When I pull a > puppet's string, connected to its finger, I expect the finger to move, > not a copy of the finger, which is then immediately thrown away.) Yeah, I'm a little skeptical of Apple's setters doing a -copy by default also. It seems to run counter to the whole idea of shared ownership that retain/release was designed to support in the first place. sherm-- -- Web Hosting by West Virginians, for West Virginians: http://wv-www.net Cocoa programming in Perl: http://camelbones.sourceforge.net