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 是双重班级成员。而 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