2015-05-27 2 views
0

Я недавно просто обновился до xcode 6, и вдруг куча моего кода в моем приложении не работает. То, что происходило изначально, было, если вы коснулись слева от экрана, ваш персонаж будет стоять лицом слева, и если вы коснетесь направо, он окажется справа. Когда произойдет определенное взаимодействие, будет существовать метод, который будет проверять, смотрел ли он влево или вправо, и анимация соответствовала бы соответствующим образом. Теперь в XCode 6 он может смотреть влево, но воспроизводить анимацию, которая коррелирует вправо, и когда я снова нажимаю налево, он кратко смотрит влево, а затем воспроизводит только правильную анимацию. У меня есть образец части кода, который, как мне кажется, неисправен, но я не могу понять, почему.XCode 5 vs XCode 6 изменяет анимацию?

if (Stickman.image == [UIImage imageNamed:@"BjLeft6.png"]) 
    { 
    Stickman.animationImages = [NSArray arrayWithObjects: 
          [UIImage imageNamed:@"BjLeft2.png"], 
          [UIImage imageNamed:@"BjLeft2.png"], 
          [UIImage imageNamed:@"BjLeft3.png"], 
          [UIImage imageNamed:@"BjLeft4.png"], 
          [UIImage imageNamed:@"BjLeft4.png"], 
          [UIImage imageNamed:@"BjLeft4.png"], 
          [UIImage imageNamed:@"BjLeft5.png"], 
          [UIImage imageNamed:@"BjLeft6.png"], 
          [UIImage imageNamed:@"BjLeft5.png"], 
          [UIImage imageNamed:@"BjLeft4.png"], 
          [UIImage imageNamed:@"BjLeft3.png"], 
          [UIImage imageNamed:@"BjLeft2.png"], 
          [UIImage imageNamed:@"BjLeft1.png"], nil]; 
    [Stickman setAnimationRepeatCount:1]; 
    Stickman.animationDuration = .5; 
    [Stickman startAnimating]; 


    } 

    else 
    { 
    Stickman.image = [UIImage imageNamed:@"BjRight6.png"]; 
    Stickman.animationImages = [NSArray arrayWithObjects: 
           [UIImage imageNamed:@"BjRight2.png"], 
           [UIImage imageNamed:@"BjRight2.png"], 
           [UIImage imageNamed:@"BjRight3.png"], 
           [UIImage imageNamed:@"BjRight4.png"], 
           [UIImage imageNamed:@"BjRight4.png"], 
           [UIImage imageNamed:@"BjRight4.png"], 
           [UIImage imageNamed:@"BjRight5.png"], 
           [UIImage imageNamed:@"BjRight6.png"], 
           [UIImage imageNamed:@"BjRight5.png"], 
           [UIImage imageNamed:@"BjRight4.png"], 
           [UIImage imageNamed:@"BjRight3.png"], 
           [UIImage imageNamed:@"BjRight2.png"], 
           [UIImage imageNamed:@"BjRight1.png"],  nil]; 
    [Stickman setAnimationRepeatCount:1]; 
    Stickman.animationDuration = .5; 
    [Stickman startAnimating]; 

    } 
+0

Является ли версия SDK одинаковой? – zaph

+0

Это не имеет ничего общего с версией Xcode. – rmaddy

ответ

1

Сравнение плохо:

(Stickman.image == [UIImage imageNamed:@"BjLeft6.png"]) 

Это сравнение адреса и UIImage imageNamed не могут возвращать тот же экземпляр изображения, как Stickman.image получил и == потерпит неудачу.

Редко сравнивает адреса экземпляров с правильным решением при сравнении для равенства.

+0

От взгляда на это похоже, что «должен» получить тот же экземпляр, который работал в xcode5. Есть ли лучший способ записать его в xcode6? –

+2

1. Это не Xcode, это приложение и каркасы Apple. Xcode - причудливый редактор/компилятор и т. Д., Он не выполняет код. 2. «От взгляда на это» недостаточно, по этим критериям он должен работать. 3. Apple не гарантирует, что тот же экземпляр будет возвращен. 4. Apple может свободно изменять, как работает UIImage ниже уровня, предоставленного документацией. 5. сравнение не работает, что является окончательным. – zaph

Смежные вопросы