0

我最近下载了 Xcode 9.2 并将我的项目设置更新为推荐。现在,对于我使用过断言的所有地方,我的代码中都会收到此警告,例如:

assert(@"Must be implemented by subclass");

什么是正确的选择?

4

3 回答 3

2

如果你使用的是 Objective-C,你想调用NSAssert(),而不是assert()(这是一个 C 函数)。

NSAssert(NO, @"Must be implemented by subclass");

如果您想继续使用assert(),则应将其视为 C 函数。

assert(0); // <-- Note: no message is provided

你可能会逃脱

assert(/* Must be implemented by subclass */ 0);

或者

assert("Must be implemented by subclass" == NULL); // <-- Note: No `@`
于 2018-01-03T16:08:24.473 回答
1

您的assert条件是一个始终通过测试的字符串。

你应该检查一个条件assert

于 2018-01-03T15:56:06.730 回答
0

a) assert 需要一个条件来检查。您将字符串视为条件并且它是非空的...做

b)您使用 NSString 而不是 char* 所以您将 objC 对象传递给 C 在这种情况下也不起作用......做

assert(codition & "Message");

c) 你应该对 ObjC 代码使用 NSAssert .. 做

NSAssert(codition, @"Message");
于 2018-01-03T16:15:21.363 回答