-2

私は今、このような奇妙な問題に直面しています。プロジェクトのデモに電卓を実装しようとしています。私が実装したい場所はARC有効で、プロジェクトのARC無効化はすべてがそのデモで完全に機能しており、プロジェクトtOOで完全に機能していますが、浮動小数点値で操作を実行しようとすると、アプリケーションがクラッシュし、EXC_BAD_ACCESS(コード1 ...以下は私のコードです

_currentValue と _previousValue は .h ファイルではこのようになっています

@property (retain,nonatomic) NSNumber* currentValue;  
@property (retain,nonatomic) NSNumber* previousValue;

私の.mファイルには、問題に直面する2つの方法があります

- (NSString *)calculateValueToString:(NSString *)valueString ForType:(enum State)type{

    _currentValue = [numberFormatterFormal numberFromString:valueString];

    NSLog(@"%@",_currentValue);  //whatever number i input it get prints here

    [self calculateValue]; // this method get called
    state = type;          

    if (state != Equal){
        _previousValue = _currentValue;
         NSLog(@"%@",_previousValue);  // get print 
        _currentValue = @0 ;
    }

     NSLog(@"_previousValue%@",_previousValue);   // get print 
    NSLog(@"_currentValue%@",_currentValue);      // get print
    return [numberFormatterFormal stringFromNumber:_currentValue]; 
}

- (void)calculateValue{ 

    switch (state) { 
        case Plus:
            _currentValue = [NSNumber numberWithDouble:[_previousValue doubleValue] + [_currentValue doubleValue]];
            break;
        case Minus:                        //GET ONLY EXECUTE ONLY IF OPERATION IS -

              NSLog(@"%@",_currentValue);  // it has value 

   --->>>>>>> HERE APP CRASH         NSLog(@"%@",_previousValue);   // app crashes here

            _currentValue = [NSNumber numberWithDouble:[_previousValue doubleValue] - [_currentValue doubleValue]];

               NSLog(@"%@",_currentValue);  
              // THIS ALL WORK PERFECTLY IN THAT DEMO WHICH IS ARC ENABLE 
            break;
        case Multiple:
            _currentValue = [NSNumber numberWithDouble:[_previousValue doubleValue] * [_currentValue doubleValue]];
            break;
        case Divide:
            _currentValue = [NSNumber numberWithDouble:[_previousValue doubleValue] / [_currentValue doubleValue]];
            break;
        default:
            break;
    }
}
4

1 に答える 1