Objective-C对象文字的隐式布尔转换始终求值为true ios

时间:2018-01-03 15:09:17

标签: ios objective-c compiler-warnings deprecation-warning xcode9.2

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

String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());

对此有什么选择?

3 个答案:

答案 0 :(得分: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 `@`

答案 1 :(得分:1)

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

您应该检查assert

中的条件

答案 2 :(得分:0)

a)断言需要检查条件。你把字符串视为一个条件,它是非空的...做

b)你使用NSString而不是char *所以你将objC对象传递给C,在这种情况下它不会起作用... do

assert(codition & "Message");

c)你应该使用NSAssert for ObjC Code ..做

NSAssert(codition, @"Message");