Since memory management is fierce on mobile devices (especially iOS devices) all the lazy loading you can implement will give your app a better memory footprint.Although Xamarin.iOS / Mono has quite a good Garbage Collection level (either SGen or Boehm) every Image that isn’t needed beforehand will only take up memory if defined on a global scale (like in the AppDelegate, as propery in some sort of container class, etc…)

So how would you feel lazy loading all the about variables, images, even class instances (objects) that you might eventually use, but not upfront?

This is easily implemented using the Lazy class that is available from .Net 4.5 and up!

What Lazy actually does is react on when it is first called and call the constructor of the T defined between angle brackets. So if you have a class named MyClass and it has a public MyClass () constructor the following would initiate lazy load:

var myClassObject = Lazy ();

As soon as the myClassObject is used somewhere, the Lazy class will initiate the MyClass’s constructor and get your object into the myClassObject variable.
The same goes for images and alike: