Утечка памяти двигателя Finch Sound - PullRequest
0 голосов
/ 20 февраля 2012

Я хочу получить доступ к некоторым звукам в разных классах, и их можно читать и изменять значения высоты звука каждого звука в нескольких классах.Затем я использую extern FISound *mySound в моих методах делегатов приложения и загружаю их в мой контроллер представления.Это работает как брелок, но проблема в том, что всегда есть утечки памяти для [FIDecoder decodeSampleAtPath:error]

Leaked Object   #   Address Size    Responsible Library Responsible Frame
FISample,1  0x76e9030   32 Bytes    Musizs  -[FIDecoder decodeSampleAtPath:error:]
NSConcreteData,1    0x76e7100   32 Bytes    Foundation  +[NSData(NSData) allocWithZone:]
NSConcreteData,1    0x737b080   32 Bytes    Foundation  +[NSData(NSData) allocWithZone:]
FISample,1  0x76e81c0   32 Bytes    Musizs  -[FIDecoder decodeSampleAtPath:error:]

У кого-нибудь есть такие проблемы?Спасибо.

Ответы [ 2 ]

1 голос
/ 22 февраля 2012

Код библиотеки мне кажется хорошим даже после проверки с помощью Instruments.Можете ли вы опубликовать короткий пример кода, который показывает утечку?Кроме того, как вы добавляете ручные release звонки к источнику?Библиотека использует ARC, поэтому ручные вызовы управления памятью должны быть незаконными.Правильно ли вы используете библиотеку, ссылаясь на весь проект XCode, или просто импортируете «голые» исходные файлы?

0 голосов
/ 22 февраля 2012

XCode 4 обнаруживает множество возможных утечек памяти с помощью Finch.Это связано с тем, что Finch неправильно называет свои методы в соответствии с рекомендациями по управлению памятью.

Методы, которые создают объекты, должны начинать свое имя метода с «new», «alloc», «copy» или «mutableCopy».

См .: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html

Например, decodeSampleAtPath следует переименовать в "allocDecodeSampleAtPath".И все, что использует этот метод, должно затем освободить его.

В Finch есть много методов, которые этого не делают, и все они должны быть исправлены.

...