首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CS193P -赋值2,descriptionOfTopOfStack:,递归类方法

CS193P -赋值2,descriptionOfTopOfStack:,递归类方法
EN

Stack Overflow用户
提问于 2012-02-14 07:15:25
回答 1查看 792关注 0票数 0

下面是一个总是返回null堆栈的类方法,例如,-when = 2,2,"+“我希望它返回"2+2”

在初始迭代中,该方法正确地确定topOfStack是NSString而不是NSNumber,但不会通过递归调用将NSString 'description‘创建为等于“2+2

我觉得我在这里遗漏了一些明显的东西,我是否正确地处理了字符串...

代码语言:javascript
复制
+ (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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-14 07:22:16

方法stringByAppendingString:返回一个自动释放的字符串,不修改原始字符串。如果你想修改description,你必须这样做

代码语言:javascript
复制
description = [description stringByAppendingString: [self descriptionOfTopOfStack:stack]];

此外,写作

代码语言:javascript
复制
NSString *description;

您只是创建了一个指向NSString的指针,而不是NSString。改为使用

代码语言:javascript
复制
NSString* description = @"";
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9269496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档