iPhone ObjC函数中的变量args
我今天一定是被困在沙发上了,因为我花了一个多小时试图理解如何在我正在从事的这个iPhone项目中使用变量args。有人能帮我在下面的单元测试中得到一个绿色条吗?我哪里做错了iPhone ObjC函数中的变量args,iphone,objective-c,Iphone,Objective C,我今天一定是被困在沙发上了,因为我花了一个多小时试图理解如何在我正在从事的这个iPhone项目中使用变量args。有人能帮我在下面的单元测试中得到一个绿色条吗?我哪里做错了 #import <SenTestingKit/SenTestingKit.h> @interface VAArgsTest : SenTestCase { } @end NSString* vaArgsAppend(NSString *first, ...) { NSMutableString *li
#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
#导入
@接口VAArgsTest:SenTestCase
{
}
@结束
NSString*VAARGSAPEND(NSString*first,…)
{
NSMutableString*list=[[NSMutableString alloc]initWithString:first];
每次收费;
va_列表参数列表;
va_开始(参数列表,第一);
while(eachArg=va_arg(参数列表,id)){
if(eachArg)[list appendString:(NSString*)eachArg];
}
va_end(论点列表);
返回[列表自动释放];
}
@实现VAArgsTest
-(void)testCallVaArgsAppend
{
NSString*result=VAARGSAPEND(@“一”、“二”、“三”);
STAssertEqualObjects(结果,@“一二三”,“预期附加字符串”);
}
@结束
更改此选项:
NSString *result = vaArgsAppend(@"one ", "two ", @"three");
为此:
NSString *result = vaArgsAppend(@"one ", @"two ", @"three", nil);
在编写变量方法时,必须有一种方法来确定要读取多少个参数。最常见的方法是在传入的列表中查找终止值。你没有达到你的极限状态 另外,“two”是一个常量字符*,而不是一个id。将其视为id可能会产生各种有趣的结果。替换为@“two”
另外,如果(每次充电)是无关的。如果您能解释一下它是如何失败的,那会有所帮助。显然,断言失败了,但是结果字符串中返回了什么?非常感谢!我还不习惯在arg列表中包含nil。我想检查这两个答案是否正确。好眼力!我错过了第二次辩论中的@符号。