Delegate needs to be weak otherwise it creates a retain cycle and the view controller is never released.