簡體   English   中英

關於 Swift for 循環的內存管理問題

[英]Memory management issue about Swift for-loop

我接管了一些遺留代碼,有一個像這樣的代碼片段

let albumGroups = data.getJSONArray("groups")
let groupNum = albumGroups.length()
var album: JSONObject

for i in 0..<groupNum
{
    album = albumGroups.getJSONObject(i)
    orderSummary.album.name[i] = album.getString("name")
}

當應用程序在調試模式下構建時,它運行沒有任何問題。 但是如果它是在 Release 模式下構建的,當 i 為 1 時,它會在album.getString("name")處崩潰。錯誤表明專輯變量已被釋放。

我嘗試在啟用了 Address Sanitizer 標志的情況下運行該應用程序。

地址消毒器調試

在此處輸入圖片說明

我的問題是,據我所知,專輯變量超出了循環的范圍,為什么它在第一個循環結束后被釋放?

檢查orderSummary.album不是弱引用。 如果是,您在第 1 行初始化的Album將立即銷毀,這將解釋當您嘗試設置orderSummary.album.name[i]時崩潰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM