gpt4 book ai didi

IOS 相当于 abort() 用于断言失败

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:41:31 25 4
gpt4 key购买 nike

有没有一种简单的方法可以在条件为假时抛出 NSAssert 生成的异常?与我要求的相似:在 C stdlib 中,失败的断言导致 printf()abort()。在 Java 中,失败的断言会导致 java.lang.AssertionError。在 ObjectiveC 中,失败的断言似乎会导致(从 NSException.h 复制):

[[NSAssertionHandler currentHandler] handleFailureInMethod:_cmd
object:self file:[NSString stringWithUTF8String:__FILE__]
lineNumber:__LINE__ description:(desc), ##__VA_ARGS__];

我能想到的最好的等效方法是将上面的 block 放在我定义的宏中(我们称它为 NSFail()),或者使用 NSAssert(NO, ...) NSFail 宏有点不受欢迎,因为我似乎在定义一些本质上已经存在的东西。 NSAssert(NO,...) 选项是不可取的,因为我不希望在定义 NS_BLOCK_ASSERTIONS 时禁用代码。

最佳答案

快速而肮脏:

[[NSException new] raise]

您还可以添加描述性原因:

[[NSException exceptionWithName:@"Impossible"reason:@"发生了不应该发生的事情"userInfo:nil] raise]

NSException apple docs

关于IOS 相当于 abort() 用于断言失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18855248/

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