我最近下载了 Xcode 9.2 并将我的项目设置更新为推荐。现在,对于我使用过断言的所有地方,我的代码中都会收到此警告,例如:
assert(@"Must be implemented by subclass");
什么是正确的选择?
我最近下载了 Xcode 9.2 并将我的项目设置更新为推荐。现在,对于我使用过断言的所有地方,我的代码中都会收到此警告,例如:
assert(@"Must be implemented by subclass");
什么是正确的选择?
如果你使用的是 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 `@`
您的assert
条件是一个始终通过测试的字符串。
你应该检查一个条件assert
a) assert 需要一个条件来检查。您将字符串视为条件并且它是非空的...做
b)您使用 NSString 而不是 char* 所以您将 objC 对象传递给 C 在这种情况下也不起作用......做
assert(codition & "Message");
c) 你应该对 ObjC 代码使用 NSAssert .. 做
NSAssert(codition, @"Message");