<p>Every time I call this method my NSMutableData is leaking and I cannot figure out how to plug it. theData's retain count is upped by one after the decoder is allocated and initialized and I have no idea why. I am stuck with a retain count of 2 at the end of the method and attempting to release it causes an app crash.</p>

<pre><code>- (void)readVenueArchiveFile:(NSString *)inFile key:(NSString *)inKey
{
    NSMutableData *theData;
    NSKeyedUnarchiver *decoder;


    theData = [NSData dataWithContentsOfFile:inFile];

    decoder = [[NSKeyedUnarchiver alloc] initForReadingWithData:theData];

    venueIOList = [[decoder decodeObjectForKey:inKey] mutableCopy];

    [decoder finishDecoding];

    [decoder release];
}
</code></pre>

Don't worry about retain counts, worry about balance within a method.  What you're doing in this method looks correct, assuming
```
venueIOList
```
is an instance variable.
To expand on my answer a little bit:  The unarchiver might be retaining your data during the unarchive operation, and then sending the data
```
-autorelease
```
when it's done instead of
```
-release
```
.  Since that's not something
you
did, it's not something
you
have to care about.