//guard clause: check the bad state
//first and leave early
NSNumber *popOrNil(NSMutableArray *stack) {
if (stack.count == 0) {
return nil;
}
NSNumber *last = stack.lastObject;
[stack removeLastObject];
return last;
}
NSMutableArray *stack =
[NSMutableArray array];
[stack addObject:@1];
NSNumber *n1 = popOrNil(stack);
//n1 is 1
NSNumber *n2 = popOrNil(stack);
//n2 is nil