【问题标题】:theos error "Control reaches end of non-void function" cydia tweaktheos 错误“控制到达非空函数的结尾” cydia 调整
【发布时间】:2013-02-10 17:31:46
【问题描述】:

我正在尝试创建一个 cydia 调整,以改变游戏中的某些方法

但我总是收到此错误

control reaches end of non-void function

这是我的 Tweak.xm 中的代码(我将它们缩短到发生错误的位置)

 %hook Player



 -(void)Jump:(int)jump {

        if ((Upgrade = YES)) {

            jump = 1;

            %orig(jump); 

                            }

        else {

            %orig;

             }

    }
    -(int)GetSkill {

        if ((Upgrade = YES)) {

            return 1;

                             }

        else {

            %orig;

             }

    }

    %end

    %hook MainLayer

    -(int)GetSkill:(int)skill {
        if ((Upgrade = YES)) {

            skill = 1;

            %orig(skill);

                             }
        else {

            %orig;


             }

    }

    %end

我不知道为什么代码块不起作用。对此感到抱歉

请帮助我,虽然这是一个警告 即使我在警报中单击“否”,代码似乎仍然会改变游戏

【问题讨论】:

  • 这些方法在任何情况下都不返回返回值。有时编译器警告会产生误导,因为您的代码结构良好并且总是返回一个值。在这种情况下,您只需添加 'return 0;' 即可克服编译器警告。到方法的末尾,尽管这条语句可能永远不会被执行。

标签: objective-c cydia


【解决方案1】:

您的函数-(int)GetSkill:(int)skill 指定了int 的返回类型,但您没有return 语句。如果它不打算返回任何东西,请将其设为 (void)

如果您在 if 语句中有 return,则必须在 ifelse 部分中至少有 1 个返回,它才能始终返回,如果没有,它会给您那个警告

旁注:这个声明if ((Upgrade = YES)) 将始终为真,因为它分配Upgrade 而不是进行比较,您可能希望将其更改为if ((Upgrade == YES))

【讨论】:

    【解决方案2】:

    我没有使用 Theos 的经验,也没有调整应用程序。

    话虽如此,我建议你使用return %orig; 而不是%orig;

    【讨论】:

      猜你喜欢
      • 2013-10-06
      • 1970-01-01
      • 1970-01-01
      • 2019-12-04
      • 2014-11-25
      • 2022-01-25
      • 1970-01-01
      相关资源
      最近更新 更多