我正在使用Xcode 5.0.2。当我在我的项目上运行analyze时,它为NSArray中的stop参数提供了死存储消息indexOfObjectWithOptions:passingTest :.消息是 - 永远不会读取存储到'stop'的值。示例代码是
NSUInteger index = [self.array indexOfObjectWithOptions:NSEnumerationConcurrent passingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
// Do some check. If it passes
stop = YES; // Reports dead store here
return isFound;
}];
我相信我正确地停止了枚举。是否有另一种设置停止值的方法,以便我可以避免此消息。
答案 0 :(得分:2)
改变这个:
stop = YES;
为:
*stop = YES;
您需要取消引用指针以设置其值。
尽管你应该这样做是非常安全的(如果指针是nil
,它可以避免崩溃):
if (stop) {
*stop = YES;
}
答案 1 :(得分:0)
您没有在代码中的任何其他位置使用该变量stop
,您只需为其分配值,但不使用该值。
情况1 :
如果您编写如下代码:
- (BOOL)deadStore
{
BOOL dead = YES; // dead store warning
dead = NO;
return dead;
}
情况2 :
如果您编写如下代码:
- (int)deadStore
{
BOOL dead = YES; // dead store warning
int notDead = 7
return notDead;
}