2012-08-07 2 views
-1

안녕하세요! 내 계산기 프로그램에서는 빼기/곱셈/나눗셈 방법을 사용하지 않고 일하는 방법을 사용합니다.뺄셈/곱셈/나눗셈을하지 마시고 추가 하시길 바랍니다.

첨가 방법 :

-(IBAction) clickPlus 
{ 
    [self processOp: '+']; 
} 

감산 방법

-(IBAction) clickMinus 
{ 
    [self processOp: '-']; 
} 

프로세스에있어서 "clickEquals"

:

그 방법 "OP"에
-(void) processOp: (char) theOp 
{ 
    NSString *opStr; 

    op = theOp; 

    switch (theOp) { 
     case '+': 
      opStr = @" + "; 
      break; 
     case '-': 
      opStr = @" – "; 
      break; 
     case '*': 
      opStr = @" * "; 
      break; 
     case '/': 
      opStr = @" ÷ "; 
      break; 
    } 

    [self storeFracPart]; 
    firstOperand = NO; 
    isNumerator = YES; 

    [displayString appendString: opStr]; 
    display.text = displayString; 
} 

변수 사용

-(IBAction) clickEquals 
{ 
    if (firstOperand == NO) 
    { 
     [self storeFracPart]; 
     [myCalculator performOperation: op]; 

     [displayString appendString: @" = "]; 
     [displayString appendString: [myCalculator.accumulator 
             convertToString]]; 
     display.text = displayString; 

     currentNumber = 0; 
     isNumerator = YES; 
     firstOperand = YES; 
     [displayString setString: @""]; 
    } 
} 

왜 'op'가 쓰레기를 수집한다고 생각하십니까?

더 많은 코드가 필요하면 알려주세요.

+0

'op '가 인스턴스 변수 또는 속성이라고 가정하면 할당을하기 전에 opStr을 복사하기 때문에 가비지 값을 얻는 것처럼 보입니다. 나중에 'op'를 사용하면 결과는 무작위가됩니다. – dasblinkenlight

+0

다양한 'clickMinus','clickMultiply' 및'clickDivide' (또는 그들이 호출되는 모든) 메소드에 중단 점 또는'NSLog' 문을 넣어 인터페이스 작성기에서 올바르게 연결되었는지 확인 했습니까? – Rob

+3

그리고 그것이 작동하지 않는다고 말할 때, 그것은 아무것도하지 않습니까, 아니면 무언가를합니까? 단지 잘못된 것입니까? 후자라면 뭐하고 있니? 정확하게 어떤 행동을보고 있으며 어떤 행동을보고 싶습니까? – Rob

답변

0

opclickEquals입니다. 그것은 클래스 ivar 될 예정입니까? 그렇다면 이 잘못되어 op이라는 로컬 변수를 사용하고 있으므로 결코 ivar을 할당하지 않습니다.

이러한 종류의 문제를 스스로 디버깅하는 방법을 배워야합니다. 너무 어렵지 않습니다. 디버거에서 한 줄씩 코드 실행을 단계별로 수행하고 이러한 종류의 문제를 찾을 수있을 때 변경 사항을 확인하십시오.

관련 문제