0

Swift deinitializer is not updating the valueone and valuetwo, i am getting zero as the answer when i am printing mainTotal.sum, it should update the value and print the answer as 95

struct mainTotal{
   static var valueone :Int = 0
   static var valuetwo :Int = 0
   static var sum :Int {
        get {
            return valueone + valuetwo
        }
    }
}

class Total{
    var valueone :Int = 10
    var valuetwo :Int = 10
    var sum :Int {
        get {
            return valueone + valuetwo
        }
    }
    func printsum(valueone:Int,valuetwo:Int){
        self.valueone += valueone
        self.valuetwo += valuetwo
    }
    deinit {
       mainTotal.valueone += valueone
       mainTotal.valuetwo += valuetwo

    }
}

var total = Total()
total.printsum(valueone: 10,valuetwo: 15)
var total1 = Total()
total1.printsum(valueone: 10,valuetwo: 20)
print(mainTotal.sum)
print(total.sum)
Mohammad Akbari
  • 4,486
  • 6
  • 43
  • 74

1 Answers1

0

deinit of Total is not getting called and that's why the values of mainTotal are not getting updated.

To call deinit of Total, you need to deallocate the total object manually.

Try this:

var total : Total? = Total()
total?.printsum(valueone: 10,valuetwo: 15)
print(total!.sum)
total = nil
print(mainTotal.sum)
PGDev
  • 23,751
  • 6
  • 34
  • 88