我遇到了一个为TableView创建一些问题的类的问题。有一个类问题和一个类问题,它们包含一系列问题。
问题是,目前这些类之间的绑定很强,因此ARC无法释放内存。我已尝试过Swift Book中描述的关于弱引用或无主引用的内容,但我无法修复代码中的泄漏。
任何人都可以帮助我,如何防止Swift在对象之间建立强关系,这样ARC可以释放使用过的内存吗?
先谢谢
class Questions {
var questions: [Question] = []
init() {
let validJSONData = NSData(contentsOfFile : NSBundle(forClass:ViewController.self).pathForResource("data", ofType: "json"))
let json = JSONValue(validJSONData)
for item in json["questions"].array!
{
var rowhHeight:CGFloat = 44.00
if(item["template"].string! == "textViewCell") {
rowhHeight = 100.00
}
var newQuestion = Question(qIndex: item["qid"].integer!, qText: item["qtext"].string!, qTemplate: item["template"].string!, qHidden: item["hidden"].bool!, qRowHeight: rowhHeight)
questions.append(newQuestion)
}
}
func getQuestions() -> NSArray {
return questions
}
deinit{
println("questionS deinitialized")
}
}
class Question: NSObject {
var qIndex: Int
var qText : String
var qTemplate : String
var qHidden : Bool
var qRowHeight : CGFloat
init(qIndex: Int, qText: String, qTemplate: String, qHidden: Bool, qRowHeight: CGFloat) {
self.qIndex = qIndex
self.qText = qText
self.qTemplate = qTemplate
self.qHidden = qHidden
self.qRowHeight = qRowHeight
}
deinit{
println("question deinitialized")
}
}
答案 0 :(得分:0)
可能是因为您的模型类将使用您的Controller类创建强循环引用,希望这将解决您的问题。
class Questions {
var questions: [Question]!
init() {
questions = [Question]()
let validJSONData = NSData(contentsOfFile : NSBundle(forClass:ViewController.self).pathForResource("data", ofType: "json"))
let json = JSONValue(validJSONData)
for item in json["questions"].array!
{
var rowhHeight:CGFloat = 44.00
if(item["template"].string! == "textViewCell") {
rowhHeight = 100.00
}
var newQuestion = Question(qIndex: item["qid"].integer!, qText: item["qtext"].string!, qTemplate: item["template"].string!, qHidden: item["hidden"].bool!, qRowHeight: rowhHeight)
questions.append(newQuestion)
}
}
func getQuestions() -> NSArray {
guard let objQuestion = questions else{return NSArray()}
return questions
}
deinit{
println("questionS deinitialized")
}
}
class Question: NSObject {
var qIndex: Int!
var qText : String!
var qTemplate : String!
var qHidden : Bool!
var qRowHeight : CGFloat!
init(qIndex: Int, qText: String, qTemplate: String, qHidden: Bool, qRowHeight: CGFloat) {
self.qIndex = qIndex
self.qText = qText
self.qTemplate = qTemplate
self.qHidden = qHidden
self.qRowHeight = qRowHeight
}
deinit{
println("question deinitialized")
}
}