可变参数方法EXC_BAD_ACCESS,Objective-C

时间:2018-07-06 12:01:57

标签: objective-c methods arguments xcode9.4

我使用的是OSX,而​​不是IOS,XCode 9.3。

我有这样的方法

- (void)logMessage:(NSString *)format, ... {
  va_list args;
  va_start(args, format);

  id arg = nil;
  while ((arg = va_arg(args,id))) {
  // Arg processing here
  }

  va_end(args);
}

当我用一种格式调用它时,就很好了。但是-有时我不需要格式的参数,所以我想知道a是否可以这样称呼:

[self logMessage:@"Something"];

然后它在EXC_BAD_ACCESS的“ while”循环中崩溃。显然是因为我忘了零。

[self logMessage:@"Something",nil];

有没有一种方法可以告诉编译器使我想起方法声明中的nil或如何捕获这些情况?

编辑: 到目前为止的方法声明:

- (instancetype)initWithType:(enum kSHErrorType)kSHErrorType
                  format:(NSString *)format, ... NS_FORMAT_FUNCTION(2,3);

0 个答案:

没有答案