下面是一个总是返回null堆栈的类方法,例如,-when = 2,2,"+“我希望它返回"2+2”
在初始迭代中,该方法正确地确定topOfStack是NSString而不是NSNumber,但不会通过递归调用将NSString 'description‘创建为等于“2+2
我觉得我在这里遗漏了一些明显的东西,我是否正确地处理了字符串...
+ (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;
}发布于 2012-02-14 07:22:16
方法stringByAppendingString:返回一个自动释放的字符串,不修改原始字符串。如果你想修改description,你必须这样做
description = [description stringByAppendingString: [self descriptionOfTopOfStack:stack]];此外,写作
NSString *description;您只是创建了一个指向NSString的指针,而不是NSString。改为使用
NSString* description = @"";https://stackoverflow.com/questions/9269496
复制相似问题