Использование переменной внутри цикла for не считается прочитанным компилятором ... почему? - PullRequest
0 голосов
/ 29 января 2012

У меня есть NSArray, и я объявляю эту переменную внутри функции локально и используется внутри цикла for.Но пока я Analyze кодирую, похоже, это ошибка или проблема.Проблема в Dead store - Values stored to 'elements' during initialisation is never read. Но я использую эту переменную внутри цикла for ...

Визуальное описание:

enter image description here

Итак, вопрос в том, почемукомпилятор говорит, что после создания NSArray я нигде не читал в своем коде?

PS Код работает так, как я задумал, но я просто хочу знать, почему эта проблема появляется?

Спасибо за любое объяснение.

Ответы [ 2 ]

2 голосов
/ 29 января 2012

Вы выделяете память для elemnts и инициализируете ее, а затем через две строки вы перезаписываете эту переменную, никогда не используя выделенную память!

Просто запишите это вместо:

NSMutableArray *values = [[NSMutableArray alloc] init];
NSArray *elements = [[alarmLevelsDoc rootElement] elementsForName:@"AlarmLevel"];
...
1 голос
/ 29 января 2012

Ваша первая строка выделяет пространство для массива, но не использует это пространство. Когда вы назначаете:

 elements = [[alarmLevelsDoc rootElement] elementsForName:@"AlarmLevel"];

вы указываете эту переменную в другое пространство памяти, поэтому первая из них бесполезна.

Вы можете исправить это, просто удалив первую строку и сделав строку элементов следующим образом:

 NSArray *elements = [[alarmLevelsDoc rootElement] elementsForName:@"AlarmLevel"];
...