Что такое «значение мусора» в «Левый операнд» / «Предупреждение о значении мусора», сгенерированное «Build & Analyze»? - PullRequest
6 голосов
/ 24 октября 2010

Когда я «строю и анализирую» этот код в XCode, я получаю предупреждение, которое не понимаю. Вот метод с проблемой:

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
        UITouch * touch = [touches anyObject];
        CGPoint location = [touch locationInView:self];
        CGPoint relativePosition = CGPointMake(1.0-(location.x / self.bounds.size.width),location.y / self.bounds.size.height);
        [[Stage getSharedStage] movePartToLocation:relativePosition];
}

Вот предупреждение:

 warning: The left operand of '/' is a garbage value
         CGPoint relativePosition = CGPointMake(1.0-(location.x / self.bounds.size.width),location.y / self.bounds.size.height);
                                                     ~~~~~~~~~~ ^
1 warning generated.

Вот стрелки: alt text

Что он пытается мне сказать? Код работает нормально.

Ответы [ 3 ]

6 голосов
/ 24 октября 2010

Трудно сказать, не видя всей функции, но я бы сказал, что это означает, что существует путь, по которому может пойти код, где location.x никогда не инициализируется.Может случиться так, что код никогда не пойдет по этому пути в вашем тестировании, но такая возможность есть.

РЕДАКТИРОВАТЬ: Я собираюсь сделать дикую догадку и сказать, что это потому, что [затрагивает anyObject] может быть возвращенаnil.В этом случае [touch locationInView:self] вернет мусор (помните, что отправка сообщений на nil совершенно допустима).

Попробуйте сделать оставшуюся функцию условной на (touch != nil).

1 голос
/ 03 апреля 2013

левый операнд '/' является мусорным значением. Это говорит о том, что мы должны дать начальное значение location.x ,, потому что [touch locationInView: self] может иметь значение nil, поэтому необходимо определить, будет ли ! = ноль)

0 голосов
/ 08 июля 2012

Если touch равен nil, [touch locationInView:] вернет результат nil struct, который до некоторой версии llvm гарантировал бы только то, что первые байты структуры [размер указателя] обнуляются, а остальные все равно будутфигня.

AFAIK [затрагивает anyObject] никогда не может быть нулем, а предупреждение является ложным срабатыванием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...