सेटअप: मेरे पास एक ViewController ProblemView और class A है। मैं ProblemView कक्षा A पास करता हूं, ताकि मैं इस पर काम कर सकूं। यह इस तरह दिखता है (सरलीकृत):

class ProblemView: UIViewController{
    var instanceOfA = A()
    instanceOfA.passView(passedVC: self)
}

class A{
    var workOn = ProblemView()

    func passView(passedVC: ProblemView){
        workOn = passedVC
        // I noticed, if I declare a varible locally like var workOn2 = passedVC, my problem is solved - 
        // but I need the variable globally, because I don't want to pass it around within this class
    }
    func doSth(){
        // here I interact with variables of the passed ViewController
    }
}

समस्या: जब भी मैं ऐप के भीतर इस प्रक्रिया को पुनरारंभ करता हूं तो स्मृति हर बार तब तक बढ़ जाती है जब तक मुझे स्मृति त्रुटि नहीं मिलती।

मैंने क्या प्रयास किया: मैंने दोनों वर्गों में deinit जोड़ा। class A को हमेशा डीइनिशियलाइज़ किया जाता है लेकिन class ProblemView नहीं (यह समस्या हो सकती है?) मुझे यह भी पता चला कि जब मैं वैश्विक स्तर पर workOn घोषित नहीं करता, लेकिन passView फ़ंक्शन के भीतर, तो यह ठीक काम करता है। लेकिन मुझे विश्व स्तर पर चर की आवश्यकता है, क्योंकि मैं इसे A के कई अलग-अलग कार्यों में उपयोग करता हूं। इस समस्या का समाधान या समाधान क्या हो सकता है?

0
SanCrusher 4 पद 2020, 02:49

1 उत्तर

सबसे बढ़िया उत्तर

एक दूसरे के लिए मजबूत संदर्भ।

कक्षा ए को बदलने का प्रयास करें:

weak var workOn: ProblemView?

func passView(passedVC: ProblemView){
    workOn = passedVC
    // I noticed, if I declare a varible locally like var workOn2 = passedVC, my problem is solved - 
    // but I need the variable globally, because I don't want to pass it around within this class
}
func doSth(){
    // here I interact with variables of the passed ViewController
}
1
Yuriy Troyan 4 पद 2020, 00:15