Here's an interesting case.  What you should do is either wrap the whole thing in a [XXX autorelease] or explicitly add a call to [data retain] before you add it to events, and then call [data release immediately after].  Any time you add an item to an array the array itself increments the retain count.