0

我的问题是这个。在您在下面看到的代码中,我的第二个参数是 aNSString*并且当我递归地从数组中获取对象并将它们添加到buildDescription参数时,我使用了stringByAppendingFormat我理解的方法 - 在堆上创建一个新对象。如果我在参数中有一个可变字符串然后使用其他一些方法来附加新变量会更好吗?由于 Obj-C 中的所有对象都是在堆上创建的,这是进行递归的首选方式,这两种方法有什么好处?当然,只需将指针传递给可变对象,它就需要更少的内存。

+ (NSString *)makeDescriptionRecur:(NSMutableArray *)stack: (NSString *) buildDescription
{
    id topOfStack = [stack lastObject];
    if (topOfStack) [stack removeLastObject];

    if ([topOfStack isKindOfClass:[NSNumber class]])
    {
        return [self makeDescriptionRecur:stack:
               [buildDescription stringByAppendingFormat:@"%@ ", topOfStack]];

    } else if  ([topOfStack isKindOfClass:[NSString class]]) {
4

1 回答 1

1

如果我在参数中有一个可变字符串然后使用其他一些方法来附加新变量会更好吗?

至少那不会占用O(n ^ 2)内存,只是O(n)。也许更“最佳”一点。

于 2013-01-30T20:19:03.833 回答