gpt4 book ai didi

objective-c - 奇怪的错误 NSAssert

转载 作者:IT老高 更新时间:2023-10-28 11:37:26 32 4
gpt4 key购买 nike

我不知道为什么我得到了

use of undeclared identifier _cmd  did you mean rcmd

在 NSAssert 所在的那一行。

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int x = 10;

NSAssert(x > 11, @"x should be greater than %d", x);

[pool drain];
return 0;
}

最佳答案

在每个 Objective-c 方法中都有两个隐藏变量 id selfSEL _cmd

所以

- (void)foo:(id)bar;

真的

void foo(id self, SEL _cmd, id bar) { ... }

当你打电话时

[someObject foo:@"hello world"]

其实是

foo( someObject, @selector(foo), @"hello world")

如果您在 NSAssert 上单击 cmd 以跳转到它的定义,您将看到它是一个宏,它使用您调用它的方法的隐藏 _cmd 变量。这意味着如果你不在一个 Objective-c 方法中(也许你在 'main' 中),因此你没有 _cmd 参数,你就不能使用 NSAssert。

您可以使用替代的 NSCAssert。

关于objective-c - 奇怪的错误 NSAssert,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9739460/

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