Ваш код выглядит хорошо! В том, что вы показали, нет утечек памяти. Если вы хотите, вы можете объявить theDict следующим образом:
theDict = [[[NSMutableDictionary alloc] init] autorelease];
Вызов «autorelease» добавит объект в пул autorelease, и он будет автоматически освобожден после выполнения вашей функции. Это удобно - потому что вы не должны помнить, чтобы позвонить релиз. В любом случае здесь будет работать - хотя.
Утечка в вашем приложении при каждом вызове этой функции или только в первый раз? Если Instruments не показывает вам строку кода, где происходит утечка, скорее всего, это просто что-то в системе. По моему опыту, некоторые небольшие утечки случаются очень часто из-за случайных системных проблем.
EDIT:
Утечка такого размера не должна вызывать нестабильности в вашем приложении. Когда вы ищете утечки памяти, вы должны следить за:
- Утечки с участием больших кусков
память (объекты NSData или NSImage и т. д.)
- Утечки внутри циклов или в функциях
вызывается неоднократно (это сложит
быть значительным).
Даже на iPhone (где ваше приложение получает около 28 МБ ОЗУ, макс.) Небольшая утечка в 16 или 32 байта не имеет большого значения. Как правило, Instruments сообщает о нескольких утечках прямо при запуске приложения - и это не большая проблема. Вы просто хотите убедиться, что вы не теряете все больше и больше памяти во время работы вашего приложения - потому что серьезный пользователь может продолжать запускать ваше приложение до тех пор, пока не будет утечка всей доступной памяти. ОС не будет повторно использовать утечку памяти, потому что она думает, что ваше приложение все еще использует ее - так что в конечном итоге вы не сможете выделить память для новых объектов.
Надеюсь, это поможет!