[TxMt] An alternate stracc (objc bundle) implementation snippet
Allan Odgaard
throw-away-1 at macromates.com
Wed Apr 12 23:19:49 UTC 2006
On 12/4/2006, at 23:37, Mark Grimes wrote:
> [...] Clearly fThing is not defined so return fThing makes no sense
> in a getter accessor method. Nor does instantiating another string
> object in the setter method.
As for fThing, I have no idea. I guess f is a prefix to signal
“instance variable.” I don’t see anything new instantiated in the
setter though. It makes a copy of the ivar pointer, copies the new
value to the ivar, and the releases the old ivar via the copied pointer.
I did however update it, now that you brought it up. I removed a few
of your placeholders, here’s what I am left with:
- (NSString *)${1:thing}
{
return ${2:$1};
}
- (void)set${1/.*/\u$0/}:(NSString *)${3:a${1/.*/\u$0/}}
{
$3 = [$3 copy];
[$2 release];
$2 = $3;
}
> [This models the string accessor implementation defined in
> Hillegass ... if it's not correct, maybe someone should tell Aaron.]
I beleive Apple had a Cocoa Intro section up on ADC (from WWDC) long
ago where they spent at least 15 minutes talking about several
different strategies with respect to writing getters and, in
particular, setters -- each with their own advantages.
For example should you retain/autorelease in your getter (what if A
gets your value, then B sets a new value, now A is holding a pointer
to a released object, but this may be in teh same “cycle”, so A is in
good faith) -- should you autorelease your ivar in the setter
(another solution to the previous problem), should you retain or
copy, etc.
More information about the textmate
mailing list