在 for in 循环中使用变量,不认为编译器会读取...为什么呢?

发布于 2024-12-29 07:39:41 字数 352 浏览 0 评论 0原文

我有一个 NSArray,我在本地函数内声明该变量并在 for 循环中使用。但是,当我分析代码时,它似乎是一个错误或问题。问题是死存储 - 初始化期间存储到“元素”的值永远不会被读取。但我确实在 for in 循环内使用该变量...

视觉描述:

在此处输入图像描述

所以问题是,为什么编译器说创建 NSArray 后我还没有阅读代码中的任何地方?

PS Code 按我的预期运行,但我只想知道为什么会出现此问题?

感谢您给出的任何解释。

I have an NSArray, and I am declaring that variable inside a function locally and used inside in for loop. But while I Analyze code it appears to be an error or an issue. The issue is Dead store - Values stored to 'elements' during initialisation is never read. But I do use that variable inside a for in loop...

Visual Description :

enter image description here

So the question is, Why compiler says that after creating NSArray I haven't read anywhere in my code?

P.S. Code runs as I intended, but I just want to know why is this issue showing up?

Thanks for any explanation given.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

疯狂的代价 2025-01-05 07:39:42

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

只需这样写:

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

You're allocating memory for elemnts and initialising it, and then two lines later you overwrite that variable having never used the allocated memory!

Just write this instead:

NSMutableArray *values = [[NSMutableArray alloc] init];
NSArray *elements = [[alarmLevelsDoc rootElement] elementsForName:@"AlarmLevel"];
...
杯别 2025-01-05 07:39:42

您的第一行是为数组分配空间,但不使用该空间。
当您分配时:

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

您将该变量指向另一个内存空间,因此第一个内存空间是无用的。

您可以通过删除第一行并将元素行设置为如下来解决此问题:

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

Your first line is allocating space for the array, but not using that space.
When you assign:

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

you are pointing that variable at another memory space, so the first one is useless.

You can fix this by just deleting your first line, and making your elements line like this:

 NSArray *elements = [[alarmLevelsDoc rootElement] elementsForName:@"AlarmLevel"];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文