什么是NSAssert1?

Get*_*tsy 7 objective-c ios nsassert

我正在iOS上开发一个应用程序.我看到有一个叫做的宏NSAssert1.它是为了什么?NSLog和之间的用法有什么不同NSAssert1

请指导我或建议我可以阅读的教程.

nil*_*nil 28

NSAssert变体采取条件和消息.如果条件不满足/ true,则断言失败,NSAssert会根据提供的消息引发异常.例如,NSAssert((a == b), @"Error message");a不等于时会引发异常b. NSAssert1是一个变量,它接受一个额外的参数并将其插入到提供的格式字符串中,如下所示:NSAssert1((a == b), @"Error message: %@", someErrorString);

NSLog 将只是写一些东西到控制台.

所有这些宏的文档都在Apple的开发者网站上.

  • Ahhhh:"为了提供方法和行号信息,NSAssert()例程必须作为宏实现,因此要处理格式字符串的不同数量的参数,方法有5个断言宏:NSAssert(条件,描述),NSAssert1(条件,格式,arg1),NSAssert2(条件,格式,arg1,arg2),...,NSAssert5(...)." - http://mike.rssmemo.com/?p=40 (2认同)

zou*_*oul 5

NSAssert,NSParameterAssert,NSAssert1,和朋友们断言宏.断言是条件检查,当某些事情不正确时会尖叫:

- (void) doSomethingWithPointer: (Foo*) foo
{
    NSAssert(foo != NULL, @"The Foo pointer must not be NULL!");
    foo->something;
}
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅Stack Overflow上标记为"断言"的问题.