Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone ObjC函数中的变量args_Iphone_Objective C - Fatal编程技术网

iPhone ObjC函数中的变量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

我今天一定是被困在沙发上了,因为我花了一个多小时试图理解如何在我正在从事的这个iPhone项目中使用变量args。有人能帮我在下面的单元测试中得到一个绿色条吗?我哪里做错了

#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。我想检查这两个答案是否正确。好眼力!我错过了第二次辩论中的@符号。