Re: Garbage collector vs variable lifetime
Re: Garbage collector vs variable lifetime
- Subject: Re: Garbage collector vs variable lifetime
- From: Quincey Morris <email@hidden>
- Date: Fri, 6 Jun 2008 17:36:21 -0700
On Jun 6, 2008, at 16:42, Bill Bumgarner wrote:
The easiest way to do this is to simply to use data once after the
for() loop:
NSData* data = <get it from somewhere>;
const unsigned char* bytes = [data bytes];
NSUInteger count = [data length];
for (NSUInteger i = 0; i < count; i++)
something = bytes [i];
[data self];
Yup. I don't particularly like it either. Fortunately, it is an
uncommon case -- most of the objects in the AppKit/Foundation "just
work". This kind of a problem arises when something leverages the
C in Objective-C.
Thanks, and to Shawn for the same suggestion. It's a pragmatic
solution I can deal with.
A little inner voice insists on asking, though, how we know some
future version of the compiler might not optimize '[data self]'
upwards before the loop, if it decides that nothing inside the loop
references anything non-local:
NSData* data = <get it from somewhere>;
const unsigned char* bytes = [data bytes];
NSUInteger count = [data length];
NSUInteger largestByte = 0;
for (NSUInteger i = 0; i < count; i++)
largestByte = MAX (largestByte , bytes [i]);
[data self];
TBH, I don't see any real solution without making the compiler aware
of the GC consequences of its optimizations.
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden