2012-01-28 20 views
0

我有一个NSArray,我在本地声明了一个函数内部的变量,并在for循环中使用。但是,虽然我Analyze代码,它似乎是一个错误或问题。问题是Dead store - Values stored to 'elements' during initialisation is never read.但我确实使用内部的变量在循环...在for循环中使用变量,不认为被编译器读取......为什么是这样?

视觉说明:

enter image description here

因此问题是,为什么编译器说,创造NSArray后我没有在我的代码中读取任何地方

P.S.代码按我的意图运行,但我只想知道为什么会出现此问题?

感谢您给出的任何解释。

回答

2

您正在为elemnts分配内存并初始化它,然后两行后覆盖该变量从未使用过分配的内存!

只要写这个:

NSMutableArray *values = [[NSMutableArray alloc] init]; 
NSArray *elements = [[alarmLevelsDoc rootElement] elementsForName:@"AlarmLevel"]; 
... 
1

你的第一行是数组分配空间,但没有使用的空间。 当分配:

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

你指着另一个内存空间的变量,所以第一个是没用的。

您可以通过只删除您的第一行,并让您的元素修复这条线是这样的:

NSArray *elements = [[alarmLevelsDoc rootElement] elementsForName:@"AlarmLevel"]; 
相关问题