菜鸟教程小白 发表于 2022-12-12 10:16:57

iphone - 没有输入switch语句?


                                            <p><p>有一个我想不通的最奇怪的问题。在下面的方法中,没有输入 switch 语句。当我打印出 <code>warningAlertViewType</code> 的值时,它是正确的,但是由于某种原因 switch 语句没有激活。我以前使用过同样的方法进行切换,效果很好。 </p>

<p>有谁知道这是怎么回事?</p>

<pre><code>+ (WarningAlertView*) warningAlertViewWithType:(WarningAlertViewType)warningAlertViewType
    {
      WarningAlertView *warningAlertView = nil;
      NSLog(@&#34;WarningAlertViewType1: %d&#34;, warningAlertViewType);
      switch (warningAlertViewType)
      {
                NSLog(@&#34;Test1&#34;);
            case WarningAlertViewTypeExit:                  warningAlertView = [ init]; break;
            case WarningAlertViewTypeFacebook:            warningAlertView = [ init]; break;
            case WarningAlertViewTypeDelete:                warningAlertView = [ init]; break;
            case WarningAlertViewTypePhotoLibrary:          warningAlertView = [ init]; break;
            case WarningAlertViewTypeBack:                  warningAlertView = [ init]; break;
            default: break;
      }
      NSLog(@&#34;Test2&#34;);
      return ;
    }
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>将您的 switch 语句更改为如下所示</p>

<pre><code>switch (warningAlertViewType) {

case WarningAlertViewTypeExit:
   NSLog(@&#34;WarningAlertViewTypeExit&#34;);
   warningAlertView = [ init];
   break;

case WarningAlertViewTypeFacebook:
   NSLog(@&#34;WarningAlertViewTypeFacebook&#34;);
   warningAlertView = [ init];
   break;

case WarningAlertViewTypeDelete:
   NSLog(@&#34;WarningAlertViewTypeDelete&#34;);
   warningAlertView = [ init];
   break;

case WarningAlertViewTypePhotoLibrary:
   NSLog(@&#34;WarningAlertViewTypePhotoLibrary&#34;);
   warningAlertView = [ init];
   break;

case WarningAlertViewTypeBack:
   NSLog(@&#34;WarningAlertViewTypeBack&#34;);
   warningAlertView = [ init];
   break;

default:
   NSLog(@&#34;default&#34;);
   break;
}
</code></pre>

<p>我实际上是这样严格命名的粉丝。然后可以使用宏(我知道有些人讨厌)来大大缩短它。</p>

<pre><code>switch (warningAlertViewType) {

#define CASE(_type) \
case WarningAlertViewType ## _type: \
NSLog(@&#34;WarningAlertViewType&#34; #_type); \
warningAlertView = [ init]; \
break

CASE(Exit);
CASE(Facebook);
CASE(Delete);
CASE(PhotoLibrary);
CASE(Back);

default:
NSLog(@&#34;default&#34;);
break;

#undef CASE

}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - 没有输入switch语句?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/15913905/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/15913905/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - 没有输入switch语句?