How does instantiating an object in the getter work if the setter is used first?
===

I'm working through the Stanford lectures, calculator tutorial. http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2011-fall

In it he suggests a good technique for creating an instance of a model is to alloc/init in the getter with:


    - (NSMutableArray *)operandStack
    {
        if(!_operandStack) {
            _operandStack = [[NSMutableArray alloc] init];
        }
        return _operandStack;
    }

However, the first time `[operandStack]` is used is:

     [self.operandStack addObject:operandObject];

Which, I understand, is using the setter.

I can see that it obviously works (it runs) - but I'm at a loss understanding why if no-ones tried to get anything from `operandStack` yet. Could someone please enlighten me, I've not had any luck with any searches.

