У меня есть проект ios/swift, где я размещаю много UIImageViews в scrollview. У меня есть несколько scrollviews, и я хочу убедиться, что вся память выпущена, когда я закрываю ее. До сих пор кажется, что если я добавлю UIImage, он получит 16 ссылок со следующим кодом. Если я запустил его на любом устройстве, у него закончится память и произойдет сбой.swift: ARC: как выпустить все ссылки на UIImage
import UIKit
class ViewController: UIViewController
{
var scrollView: UIScrollView?
var backgroundView:UIImageView?
var background:UIImage?
override func viewDidLoad()
{
super.viewDidLoad()
for i in 1 ..< 10000
{
print(i)
scrollView = UIScrollView(frame: CGRect(x: 0, y: 0, width: 1000, height: 1000))
view.addSubview(scrollView!)
if let backgroundPath = NSBundle.mainBundle().pathForResource("1", ofType: "jpg")
{
background = UIImage(contentsOfFile: backgroundPath)!
}
backgroundView = UIImageView(image: background)
backgroundView?.frame = CGRect(x: 100, y: 500, width: 500, height: 500)
scrollView?.addSubview(backgroundView!)
print(CFGetRetainCount(background!))
print(CFGetRetainCount(backgroundView!))
print(CFGetRetainCount(scrollView!))
scrollView!.contentSize = CGSize(width: 500, height: view.frame.height)
backgroundView = nil
scrollView = nil
background = nil
}
}
}
Как получить ссылочный счетчик нуля для освобождения памяти? Благодаря!
Я имею в виду 16 ссылок на UIImage. У меня создалось впечатление, что установка UIImageView, Scrollview и UIImage на ноль очистит их ссылки, но это, похоже, не происходит. Я попытаюсь полностью удалить их из представления. – timfi
Установка этих параметров на 'nil' удаляет ваши сильные ссылки на них, но когда вы вызываете' addSubview', вы добавили их в иерархию представлений, которая поддерживает свои собственные сильные ссылки. Вы должны «removeFromSuperview», чтобы удалить его из иерархии представлений и разрешить те последние оставшиеся сильные ссылки. – Rob
спасибо, потребовалось время, чтобы реализовать в моем фактическом проекте, но мои проблемы окончены! вес моих плеч, близкий срок: – timfi