сделай что-нибудь, когда счетчик = x

#iphone #objective-c #animation #if-statement #counter

#iPhone #objective-c #Анимация #if-оператор #счетчик

Вопрос:

У меня есть счетчик, который делает counter каждый раз, когда одно изображение касается другого изображения.

Теперь то, что я хочу сделать, это: if counter=2; do something , но я всегда получаю сообщение об ошибке:

Присваивание создает указатель из целого числа без приведения

Вот часть кода:

 -(void)checkcollision {
    if(CGRectIntersectsRect(flakeImage.frame, viewToRotate.frame)) {
       counter  ;
    }
}

-(void)checknumber {
    if(counter=2) {
        viewToRotate.alpha=0;
    }
}
  

Комментарии:

1. В этом случае счетчик также объявлен неправильно. Сделайте это int, а не указателем.

2. куда я должен поместить счетчик int; пожалуйста?

Ответ №1:

Возможно, ты делаешь это:

 if (counter = 2) {
    // Do something.
}
  

Это распространенная ошибка в if инструкциях. Исправление было бы:

 if (counter == 2) {    // Note the "==", instead of "="
    // Do something.
}
  

Хотя это всего лишь предположение — мне нужно было бы увидеть дополнительную информацию об ошибке или о том, что вы хотите сделать.

Редактировать

А — я видел ваш недавно опубликованный код, подтверждающий то, что я заявил выше. В вашем коде указано, что вы пытаетесь присвоить значение ‘2’ counter в if инструкции. Вы хотите, == чтобы это было проверкой на равенство.

Комментарии:

1. Хрустальный шар этого парня в огне! хороший ответ на плохой вопрос.

2. да, но когда я делаю этот xcode, скажи мне для той же строки: сравнение между указателем и целым числом

3. Вот почему вы пишете условные выражения в обратном порядке. if (2 == счетчик); компилятор обнаружит вашу ошибку, если вы опустите один из знаков равенства.

4. @Arvin: Ошибка сравнения указателя и целого числа означает, что вы определили свой counter как какой-то id тип. Найдите строку, в которой вы инициализируете счетчик, и убедитесь, что вы не используете * с именем переменной. Это должно быть что-то вроде: NSInteger counter; , НЕ : NSInteger *counter; . Я не знаю, к какому типу относится ваша counter переменная, но если это что-то вроде int или NSInteger , вам нужно знать, что это не указатели на объекты.