3

私には奇妙な状況があります。次のコードの switch ステートメントの右中括弧で例外が発生します。

imageViewPosition = self.imageView6.center;
switch(direction) {
   case(1): 
      if (starty-imageViewPosition.y>50) {
         imageViewPosition.y = starty+100;
      } else {
         imageViewPosition.y = starty;
      }
      break;
   case(2): 
      ...
   }         <----- Here i get the exception

starty は double クラスのメンバーです。imageViewPosition は CGPoint です。このように実行すると、EXC_BAS_ACCESS 例外が発生します。

次の場合、例外は発生せず、すべてが期待どおりに機能します。なぜそうなのかわかりません。

a) if ステートメントに括弧を追加すると、すべて正常に動作します。

if ((starty-imageViewPosition.y)>50) {

b) 中括弧内に case ステートメントを配置すると、すべて正常に動作します。

imageViewPosition = self.imageView6.center;
switch(direction) {
   case(1): {
      if (starty-imageViewPosition.y>50) {
         imageViewPosition.y = starty+100;
      } else {
         imageViewPosition.y = starty;
      }
      }
      break;

なんで?a) と b) の選択肢に対する答えは異なると思います。これは、スイッチを使用した別の状況ですでに発生していたので、何が間違っているのかを理解したいと思います。ありがとう。

4

0 に答える 0