0
私は最近スイフトと学習メモリ管理を開始しました。そして私はメモリリークのこの問題を解決することができません。私は私のコントローラで、このモデルを使用していますiOSのメモリリーク3
class Contact {
var name: String?
var age: String?
weak var address: Address?
deinit {
print("Contact Delloacated")
}
}
class Address {
var address: String?
}
:
は、これは私のモデルクラスです。
class Controller: UIViewController {
var contacts: [Contact]()?
fetchContact() {
let path = "some url"
let url = URL(string: path)
let session = URLSession.shared
let task = session.dataTask(with: url!) { [weak self] (data,
response, error) in
if error != nil {
print(error!)
return
}
if let data = data {
do {
let jsonResult = try JSONSerialization.jsonObject(with:
data, options: .mutableContainers)
self?.contacts = [Contact]()
let contact = Contact()
// do some operation to get required data and append
//into contactList array
self?.append?.append(contact)
}
override func viewDidLoad() {
super.viewDidLoad()
fetchContact()
}
}
サイクルを維持回避するために、データをフェッチしながら、私は、コントローラの「fetchContact()」メソッドの閉鎖にアドレスに接触モデル及び使用「[弱い自己]」の弱いを用いているが。でも、まだメモリリーク警告が行にあります: "self?.append?.append(contact)"。 Xcode 8.3.3で計測器からの漏れが確認されました。
コントローラークラスでもまだ連絡先の参照が強い理由が混乱しています。
forループを使用していますか? –
はい、ループを解析する辞書に使用しました。 – bthapa