Use MVC pattern (Model View Controller).
Your model stores that state (e.g. variables) and logic to be applied to them. Your view displays values stored in model. Your controller has links to both model and view.
View displays your model and user can interact with it. View does not apply changes to model , view only reads model to display values. View sends notifications to controller about events (e.g. you link button press with a method on controller). Controller updates your model (increment/decrement variables, perform actions, change user name and so on).
After controller updated model in notify view to redisplay itself. As view has link to model it reads new values and displays them.
You can have multiple views connected to the same controller or multiple controllers manipulating your model.
The same goes for saving/restoring data. Your controller can load data from file or just pass file to your model to initialize itself. Once model is initialized controller request view to update itself.
And so on.
Have a read on Model-View-Controller pattern in apple documentation, it comes with examples.