Re: Trying to understand -- please help...
Re: Trying to understand -- please help...
- Subject: Re: Trying to understand -- please help...
- From: Bill Bumgarner <email@hidden>
- Date: Wed, 21 May 2008 10:21:11 -0700
On May 21, 2008, at 9:49 AM, Gérard Iglesias wrote:
with an empty NSArray (not very useful, since you can't add items to
an NSArray). Then, you leak that allocated memory by setting
cityArray
to an autoreleased NSArray
In fact it is not leaking, it is just creating an object for
nothing, it will be released by the autorelease pool, than no leaks :)
Not quite.
The original code looked like this:
@implementation Controller
- (id) init
{
cityArray = [[NSArray alloc] init];
NSString *c0 = @"New York"; //Ten NSString objects created here
...
NSString *c9 = @"Virginia Beach";
cityArray = [NSArray arrayWithObjects: c0, ...c9, nil];
return self;
}
@end
And, in fact, it would leak the initial empty NSArray instance.
(And, as others have pointed out, the second instantiation of an
NSArray through the +arrayWithObjects: method returns an autoreleased
object, thus leading to a crash.)
Personally, whenever I have lists of static strings like this, I move
'em into the projects Info.plist and then get a hold of the strings
via [[NSBundle mainBundle] infoDictionary]. Or stick 'em in a plist
file in resources. Much easier to change/maintain over time.
b.bum
_______________________________________________
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