我正在實現一個非常簡單的表視圖。不知道爲什麼對象被提前解除分配
當創建視圖,該代碼是這樣的:
func selectFolder(path: String) {
var folderViewController = UITableViewController()
var dataSource = folderViewData(path: path)
folderViewController.tableView!.dataSource = dataSource // note I've confirmed that tableView is instantiated at this point
navController.pushViewController(folderViewController, animated: true)
}
我的數據源是非常簡單; init()如下所示:
class folderViewData: NSObject, UITableViewDataSource, UITableViewDelegate {
var rootFolder:String
init(path:String) {
rootFolder = path
DPLog("initializing folderViewDelegate")
super.init()
}
<dataSource methods snipped>
}
運行此操作時,由於引用了釋放對象,導致出現錯誤。當我運行儀器尋找殭屍,我得到這個錯誤:
An Objective-C message was sent to a deallocated 'dpScheme.folderViewData' object (zombie) at address: 0x7ff6516f5cf0.
我無法弄清楚如何獲得儀器信息以純文本的,我沒有足夠的信譽發表圖片。簡短的描述是,「selectFolder」方法保留「folderViewData」一次並釋放兩次。
任何人都可以幫忙嗎?
謝謝,
大衛
謝謝,我沒有意識到dataSource屬性很弱。將dataSource作爲一個屬性看起來相當麻煩,因爲當用戶瀏覽文件夾層次結構時,會有(可能)其中的幾個。 – 2014-10-02 17:57:04