Должен ли я позвонить бесплатно, если я получаю UnsafeMutablePointer в Swift? - PullRequest
1 голос
/ 17 марта 2019

Я использую переменную внутри функции с удержанием и UnsafeMutablePointer<objc_property_t>.Должен ли я вызвать free на нем?

func logProps() {
    var count: UInt32 = 0
    let _propArr = class_copyPropertyList(cls, &count)
    // ...
    // free(propArr)  // ?
}

На другой ноте, free совпадает ли с использованием deallocate ( Swift UnsafeMutablePointer: Должен ли я вызывать deinitialize до освобождения?)?

1 Ответ

3 голосов
/ 17 марта 2019

Да, из-за названия метода. class_copyPropertyList включает слово «копия», которое указывает, что буфер принадлежит вам. Обратите внимание, что документация также указывает это:

Вы должны освободить массив с помощью free ().

Так что вы должны использовать free(), чтобы уничтожить этот буфер. В настоящее время это идентично вызову .deallocate(), , но это не обещано , поэтому следуйте инструкциям.

(Спасибо MartinR за то, что он решил вопрос «свободный от освобождения».)

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