To exclude ownership of an object added to NSArray, send a message -releaseto the object immediately after adding it to NSArray. If you do not, you will indeed have a memory leak.
Here's what happens:
NSString *str = [[NSString alloc] initWithFormat:@"%@", @"Blah"];
[array addObject:str];
[str release];
-release, NSArray , 1, , , , .