NSCF String Leak без использования строки - PullRequest
1 голос
/ 06 декабря 2010

Я работаю над монтированием некоторых сетевых ресурсов в программе. URL и имя пользователя сохраняются в словаре с паролем, поступающим из цепочки для ключей, который изменяется на NSString, используется и освобождается. Я проследил единственную утечку памяти до фактического подключения сервера:

    error = FSMountServerVolumeSync((CFURLRef) [objects objectForKey:@"url"], NULL, (CFStringRef) [objects objectForKey:@"username"],(CFStringRef) password, NULL, 0);

Объект для "url" - это NSURL, а имя пользователя - NSString.

В инструменте для определения утечки написано: Утечка объекта: ответственная библиотека NSCFString: smb, ответственный фрейм: smb_url_to_dictionary

Если посмотреть историю, это malloc CFString на 32 байта, а затем проходит 8 итераций CFRetain-CFRelease из библиотек smb и NetFS, что приводит к счету сохранения +1.

Будучи новичком в Objective-C и управлении памятью, я думал, что все делал правильно, я выпустил все alloc'd и действительно не уверен, как происходит эта утечка.

Есть ли в FSMountServerVolumeSync что-то хитрое, вызывающее эту утечку?

Есть ли способ посмотреть во время выполнения на место в памяти, чтобы определить, что там, чтобы увидеть, из чего вытекает утечка?

Кроме того, что означает NSCF?

Спасибо за помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...