以下は、常にnullを返すクラスメソッドです。たとえば、stack = 2,2、 "+"の場合、 "2+2"を返します。
最初の反復で、メソッドはtopOfStackがNSNumberではなくNSStringであると正しく判断しますが、再帰呼び出しによって「2+2」に等しいNSString'description'を作成しません。
ここで明らかな何かが欠けているように感じます。文字列を正しく処理していますか。
+ (NSString *) descriptionOfTopOfStack: (NSMutableArray * ) stack
{
NSString *description;
id topOfStack = [stack lastObject]; // get last object
if (topOfStack) [stack removeLastObject]; // then remove it from stack
if ([topOfStack isKindOfClass:[NSNumber class]]) { // is last object a number?
return [topOfStack stringValue]; // if so then return it, **done***
}
else if ([topOfStack isKindOfClass:[NSString class]])
{
if ([topOfStack isEqualToString:@"+"])
{
[description stringByAppendingString: [self descriptionOfTopOfStack:stack]];
[description stringByAppendingString:@"+"];
[description stringByAppendingString: [self descriptionOfTopOfStack:stack]];
}
}
NSLog(@"Description is %@", description);
return description;
}