私には奇妙な状況があります。次のコードの 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) の選択肢に対する答えは異なると思います。これは、スイッチを使用した別の状況ですでに発生していたので、何が間違っているのかを理解したいと思います。ありがとう。