В чем разница между takeUnretainedValue
и takeRetainedValue
? На основании документации Apple:В чем разница между takeUnretainedValue и takeRetainedValue?
Оба этих метода возвращают оригинальный, развернутый тип объекта . Вы выбираете, какой метод использовать на основе того, вызывает ли API, вызываемый вами , возвращенный неиспользуемый или сохраненный объект.
Но как узнать, неуправляемый объект является незавершенным или сохраненным объектом? Например, метод ABAddressBookCreateWithOptions:
от AddressBook
framework возвращает неуправляемый объект ABAddressBook
, который некоторые учебные пособия рассматривают как сохраняемый объект. При использовании ALAsset
метод thumbnail
возвращает неуправляемый объект CGImage
, который в некоторых учебниках рассматривает это как незавершенный объект.
Буду признателен за вашу помощь.
это хороший, простой, и-точка объяснение :) Спасибо! Итак, в моем случае, потому что метод 'ALAsset'' someALAsset.defaultRepresentation(). FullScreenImage() 'возвращает неуправляемый' CGImage', тогда я должен использовать '.takeUnretainedValue()', правильно? Я имею в виду, что 'CGImage' не содержит« create »или« copy »в своем конструкторе. –
Правильно, 'fullScreenImage' не содержит« Создать »или« Копировать ». Если вы не знаете, что использовать, вы можете найти несколько примеров кода на apple.com. Например, [этот образец] (https://developer.apple.com/library/ios/samplecode/PrintPhoto/Listings/Classes_PrintPhotoViewController_m.html) использует 'fullScreenImage', но не освобождает результат с' CGImageRelease'. – rintaro