Nash Equilibrium
Nash Equilibrium

Reputation: 89

Weird bug when compiling for release?

This line in my code is where my app keeps crashing only upon the release build.

self.setup.monthByInt = [1:"January", 2:"February", 3:"March", 4:"April", 5:"May", 6:"June", 7:"July", 8:"August", 9:"September", 10:"October", 11:"November", 12:"December"]

func updateMonthArrayForCircle(){
    self.setup.monthByYear = ["January":0, "February":0, "March":0, "April":0, "May":0, "June":0, "July":0, "August":0, "September":0, "October":0, "November":0, "December":0]
    self.setup.monthByInt = [1:"January", 2:"February", 3:"March", 4:"April", 5:"May", 6:"June", 7:"July", 8:"August", 9:"September", 10:"October", 11:"November", 12:"December"]
}

self.setup references a struct where I store the original array with the same value in a [Int:String] initialized object.

struct initialize {
    let largeFrame: CGRect = CGRect(x: 0, y: 0, width: 130, height: 130)
    let smallFrame: CGRect = CGRect(x: 15, y: 25, width: 100, height: 100)
    let screenSize: CGRect = UIScreen.main.bounds

    var month: [String] = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
    var monthByYear: [String:Int] = ["January":0, "February":0, "March":0, "April":0, "May":0, "June":0, "July":0, "August":0, "September":0, "October":0, "November":0, "December":0]
    var monthPure: [String] = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]

    var monthByInt: [Int:String] = [1:"January", 2:"February", 3:"March", 4:"April", 5:"May", 6:"June", 7:"July", 8:"August", 9:"September", 10:"October", 11:"November", 12:"December"]
    var intByMonth: [String:Int] = ["January":1, "February":2, "March":3, "April":4, "May":5, "June":6, "July":7, "August":8, "September":9, "October":10, "November":11, "December":12]
    var monthIndex: Int = 7
}

The code works fine in debug mode.

Error:

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

Upvotes: 2

Views: 87

Answers (1)

Timmy
Timmy

Reputation: 547

Ok, so the reason for your problem is because you are using escaping closures. The function returns before the completion handler is called.

Here is the solution:

sync(completionHandler: { [weak self] (success) -> Void in
    if success {
        self?.delegate?.amareUserDone()
    }
})

Upvotes: 1

Related Questions