为 XCode 4.6 和新的 clang 编译器运行分析器,我看到了很多警告
Called C++ object pointer is null
即使是像这样的 protected 表达式
- (BOOL) validate: (Node*) node
{
if (!self.hypertext) return YES;
return self.hypertext->HasNode(node);
}
1) 我怎样才能让静态分析器相信这是被妥善保护的? 2) 在某些情况下,我可能想断言 指针不会为空。怎么办?
最佳答案
这里的问题是您没有使用指针,而是使用 ObjC 调用的结果。
虽然不太可能,但分析器会看到以下情况:第一次调用返回的指针不为空,因此测试通过,第二次调用返回的指针为空。
你应该可以用一个局部变量来解决这个问题。
- (BOOL) validate: (Node*) node
{
YourType ht = [self hypertext];
if (!ht) return YES;
return ht->HasNode(node);
}
关于XCode 4.6 clang 分析器担心空 C++ 指针不能为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14780043/