Я работаю над монтированием некоторых сетевых ресурсов в программе. 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?
Спасибо за помощь