 <p>A likely reason is that each “copyData” is actually referencing the data in the original. As such, the new data objects will keep a reference to the original object. This is generally an efficiency advantage, since no copy of the actual data needs to be made. (The exception would be if you planned to keep a small subrange around.)</p> <p>All of the data objects will be released properly when the active <code>NSAutoreleasePool</code> is popped.</p> <p>In general, you shouldn’t be looking at the retain count of objects anyway. Code that isn’t under your direct control can do just about whatever it wants with object references, as long as it balances its retains and releases properly. If you’re concerned about leaks, use appropriate tools such as Instruments’s Leaks instrument.</p>