Вызовы и возвраты методов - PullRequest
       3

Вызовы и возвраты методов

1 голос
/ 26 августа 2011

Может кто-нибудь объяснить мне это, пожалуйста (я так запутался)

У меня есть кнопка, я нажимаю кнопку, чтобы вызвать метод (flowCalculaton), я устанавливаю локальную переменную типа float, назначаем NSTextField дляvar, чтобы получить его содержимое, затем перенастроить значение,

ALl собирается и работает нормально, но я получаю значение 0 для answerText (label), но если я изменяю float setVolume = 233;например, я получаю 233, показанное в метке

 - (IBAction)calculate:(id)sender {
        AppControls *cal =[[AppControls alloc]init];
        float callMethod = [cal flowCalculation] ;
        [answerText setFloatValue: callMethod ];
        [cal release];
    }


    - (float) flowCalculation {
        float setVolume = [volumeText floatValue]; 
        return setVolume ;
    }

, если я делаю это, тот же вызов в (flowCalculation) для volumeText дает мне значение NSTextField.

- (IBAction)calculate:(id)sender {
    //AppControls *cal =[[AppControls alloc]init];
    //float callMethod = [cal flowCalculation] ;
    [answerText setFloatValue: [volumeText floatValue] ];
   // [cal release];
}

Почему это не такприсвоить [volumeText floatValue] переменной в методе, пожалуйста?

Помощь приветствуется.

1 Ответ

0 голосов
/ 26 августа 2011

Что такое AppControls и почему вы выделяете новый экземпляр для расчета? Что такое volumeText в AppControls и каково его значение во вновь выделенном экземпляре AppControls?
Я просто догадываюсь, но, возможно, ты хотел сделать это:

- (IBAction)calculate:(id)sender
{
    float callMethod = [self flowCalculation] ;
    [answerText setFloatValue: callMethod ];
}

РЕДАКТИРОВАТЬ в ответ на комментарии:
Я предполагаю, что AppControls ваш контроллер представления. Таким образом, у вас есть экземпляр этого, отображаемый для пользователя, и пользователь редактирует содержимое текстовых полей в этом конкретном экземпляре AppControls. Когда вы звоните AppControls *cal =[[AppControls alloc]init];, вы создаете совершенно новый пустой экземпляр AppControls, который пользователь даже не видит. Поэтому, когда вы пытаетесь получить значения текстовых полей в этом новом экземпляре, они пусты, потому что это не тот экземпляр, который редактировал пользователь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...