在我的ARC iOS项目中使用goto时出现此编译器错误。
无法从此goto语句跳转到其标签。跳过旁路 初始化保留变量
我知道goto一般很糟糕但是......请告诉我如何解决它。代码如下,
//some process
NSArray *current = ... ;
if (current.count ==0) goto cleanup;
//proceed to next
if (processed failed) goto cleanup;
//further process
cleanup:
//clean up codes
答案 0 :(得分:4)
我终于明白了!实际上警告说清楚了,"跳过绕过保留变量的初始化"所以在下一节
//继续下一节我宣布&初始化一些对象!
我的代码/问题与c99 goto past initialization
基本相同解决方案很简单,只需添加一个{}块,如下所述[{3}}
对于那些想知道为什么我仍然需要goto的人,我认为这解释了它Why can't variables be declared in a switch statement?,特别是"干净地退出一个函数",点击此处查看示例 Is it ever advantageous to use 'goto' in a language that supports loops and functions? If so, why?
没有goto主线代码深入嵌套条件(当然我们也可以引入一个辅助函数来处理它)。