表达式中的接收者是垃圾值

发布于 2024-09-12 19:46:35 字数 677 浏览 2 评论 0原文

我正在开发一个 iPhone 应用程序,并使用 xCode 进行“构建和分析”。我收到消息“表达式中的接收器是垃圾值”,该消息指向下面我的 bode 中返回行的行:

-(UIColor*)getLevelColor{
UIColor* tempCol;

if (level==4) {
    tempCol= [[UIColor alloc] initWithRed:0.39f green:0.82f blue:0.32f alpha:1.0f];
}else if (level==5) {
    tempCol= [[UIColor alloc] initWithRed:0.61f green:0.68f blue:0.83f alpha:1.0f];
}else if (level==6) {
    tempCol= [[UIColor alloc] initWithRed:0.90f green:0.68f blue:0.99f alpha:1.0f];
}else if (level==7) {
    tempCol= [[UIColor alloc] initWithRed:0.68f green:0.97f blue:0.99f alpha:1.0f];
}

return [tempCol autorelease];
}

我怎么会得到这个以及如何修复它,这样我就不会收到该消息?

提前致谢!

尼克拉斯

I am developing an iPhone app and are using xCode to do "Build and analyze". I get the message "Receiver in expresseion is a garbage value" pointing to the line of the return-row in my bode below:

-(UIColor*)getLevelColor{
UIColor* tempCol;

if (level==4) {
    tempCol= [[UIColor alloc] initWithRed:0.39f green:0.82f blue:0.32f alpha:1.0f];
}else if (level==5) {
    tempCol= [[UIColor alloc] initWithRed:0.61f green:0.68f blue:0.83f alpha:1.0f];
}else if (level==6) {
    tempCol= [[UIColor alloc] initWithRed:0.90f green:0.68f blue:0.99f alpha:1.0f];
}else if (level==7) {
    tempCol= [[UIColor alloc] initWithRed:0.68f green:0.97f blue:0.99f alpha:1.0f];
}

return [tempCol autorelease];
}

How come I get this and how do I fix it so I don't get the message?

Thanks in advance!

Niklas

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

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

发布评论

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

评论(1

愁杀 2024-09-19 19:46:36

我猜编译器会发现有一个代码路径返回未初始化的值,并给出消息: tempCol 是一个未初始化的值,除非 level 是除4、5、6 或 7。如果您确定 level 永远不会超过 4、5、6 或 7,则添加 else { return 0; } 到 if-ladder 的末尾。

PS:如果您必须与一系列常量值进行比较,您应该使用 switch(){} 语句,这通常更快且更易于维护(恕我直言)。或者,您可以将 RGBA 值放入使用 level 索引的数组中。

(免责声明:我不做 Objective-C。没有人应该做)

I'd guess that the compiler sees that there is a code path which returns an uninitialized value and gives you the news: tempCol is an uninitialized value unless level is anything else than 4,5,6 or 7. If you are sure that level will never be anything than 4,5,6 or 7 then add a else { return 0; } to the end of your if-ladder.

PS: You should use a switch(){} statement if you have to compare against a series of constant values, this is often faster and easier to maintain (IMHO). Alternatively, you could place the RGBA values in an array which you index with level.

(Disclaimer: I don't do Objective-C. Nobody should do it)

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