RPN-Stack-Based Recursive Calculator Needs Tuneup
Instead of returning an error-String, I would pass in a nil'ed-NSError object by reference, and write an error to it, in case it occurred. the returned object would be nil

+ (NSNumber *)popOperandOffProgramStack:(NSMutableArray *)stack error:(NSError **)error
{
    //…
    error = [[NSError alloc] int…] ;
}


Usage:

NSError *error = nil;
if ([Calculator popOperandOffProgramStack:parameters error:&amp;error])
{
    //returned object not nil -&gt; success
} else {
    //nil-object -&gt; let's check the error 
}


this avoids type checking.