Сумма двух переменных в Obj-C

#objective-c

#objective-c

Вопрос:

У меня есть две переменные от 1 до 100. У меня есть две кнопки. Я хочу, чтобы одна кнопка выводила две переменные на экран, и я хочу, чтобы одна кнопка выводила сумму обеих переменных. Как мне это сделать? Мой код:

 - (IBAction)addition:(id)sender;
{
    int x = arc4random() %100;
    int y = arc4random() %100;
    [label1 setText: [NSString stringWithFormat:@"%i", x]];
    [label2 setText: [NSString stringWithFormat:@"%i", y]];
}

- (IBAction)answer:(id)sender;
{
    int z;
    z = x y;
    answer.text = [[NSString alloc] initWithFormat:@"%i", z];
}
  

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

1. В чем проблема? Этот код выглядит корректно.

2. @JackHumphries: Вы имеете в виду, помимо того факта, что его -answer: метод протекает?

3. Да, мне было интересно, почему он задает этот вопрос о отображении суммы двух целых чисел на экране. Это не был вопрос управления памятью.

Ответ №1:

С учетом того, как вы настроили свой код сейчас, вам придется объявлять свои int значения в файле интерфейса (« .h file»). Это будет выглядеть примерно так: псевдокод:

 @interface Class {
    int x;
    int y;

    UILabel *label1;
    UILabel *label2;
    UILabel *answer;
}

-(IBAction)...
  

Затем в вашем .m файле вы просто сохраните его как есть (просто удалите int объявления для x и y ) и подключите функции и выходы в Interface Builder.

Ответ №2:

Если вы создаете x и y создаете переменные рассматриваемого класса, вы должны получить то, что хотите.

Как есть, эти переменные не существуют после вызова addition: , и приведенный выше код даже не компилируется … если только у вас также не было x и y уже объявлено как ivar в классе, а версии в addition: просто затеняют их.

В любом случае удалите int из x и y в addition: .

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

1. Это не C , здесь нет такого понятия, как «переменная-член». В Obj-C. они называются переменными экземпляра.

Ответ №3:

Я думаю, у вас может возникнуть проблема с кнопкой ответа… Но это тоже должно сработать … но если нет, попробуйте приведенный ниже код, который обязательно должен сработать.

Здесь вы должны объявить x y переменную amp; в .h файле. И не объявляйте дополнительно нажатие кнопки.

 - (IBAction)answer:(id)sender;
{
    int z;
    z = x y;
    answer.text = [NSString stringWithFormat:@"%i", z];
}
  

Если у вас нет этого вопроса, я бы посоветовал вам указать точную проблему, с которой вы столкнулись..

Ответ №4:

Предполагая, что вы гарантируете, что label1 и label2 сохраняют целочисленные значения, ваш метод ответа может быть следующим

 - (IBAction)answer:(id)sender;
{
    [answer setText:[NSString stringWithFormat:@"%i",[[label1 text] intValue]   [[label2 text] intValue]]];
}