gpt4 book ai didi

iphone - iPhone ObjC 函数中的可变参数

转载 作者:太空狗 更新时间:2023-10-30 03:49:50 24 4
gpt4 key购买 nike

我今天一定是陷入了愚蠢,因为我花了一个多小时试图了解如何让变量 args 在我正在处理的这个 iPhone 项目中工作。有人可以帮我在下面的单元测试中得到一个绿色条吗?我哪里错了?

#import <SenTestingKit/SenTestingKit.h>

@interface VAArgsTest : SenTestCase
{

}

@end

NSString* vaArgsAppend(NSString *first, ...)
{
NSMutableString *list = [[NSMutableString alloc] initWithString:first];
id eachArg;
va_list argumentList;
va_start(argumentList, first);
while(eachArg = va_arg(argumentList, id)) {
if(eachArg)[list appendString:(NSString*)eachArg];
}
va_end(argumentList);
return [list autorelease];
}

@implementation VAArgsTest

-(void) testCallVaArgsAppend
{
NSString *result = vaArgsAppend(@"one ", "two ", @"three");
STAssertEqualObjects(result, @"one two three", @"Expected appended string.");
}

@end

最佳答案

改变这个:

NSString *result = vaArgsAppend(@"one ", "two ", @"three");

为此:

NSString *result = vaArgsAppend(@"one ", @"two ", @"three", nil);

当您编写可变参数方法时,您必须有一种方法来确定要读取多少参数。执行此操作的最常见方法是在您传入的列表中查找终止值。您没有达到终止条件。

关于iphone - iPhone ObjC 函数中的可变参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2268776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com