I wish I had the answer to your question, but I'm a bit curious what's amiss too as it looks ok to me - in general my understanding is you only release objects you "own", which happens when you alloc, retain or copy. You seem to have those bases covered, and convenience constructors should autorelease
afaik.
However, I did notice that you were creating an NSString inside your log statement. NSLog does a stringWithFormat on it's own so you could shorten that log statement to be:
Code:
NSLog( @"retainCount of myUrl: %i",[myUrl retainCount] );
Good luck with the leak!