2011-04-24 4 views
1

다른 게시물에서이 코드를 복사했습니다. 예제를 시도했지만, EXEC_BAD_ACCESS를 얻고 있습니다. 내가 읽은 바로는,이 오류는 경우가 해제 된 개체를 사용하려고하지만, 난 그냥 내가 그 일을 오전 어디에 표시되지 않습니다 발생합니다 ...10 진수에서 10 진수로 문자열 변환

호출 을

float weighted_average = num_of_passes/total_of_all_passes; 
NSString *newNumber = [[NSString alloc] init]; 
newNumber = [self formattedStringWithDecimal:weightedAverage]; //weighted average (float) = 15.875145 

...

기능

- (NSString *)formattedStringWithDecimal:(NSDecimalNumber *)decimalNumber 
{ 
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
    [formatter setMaximumFractionDigits:2]; //two deimal spaces 
    [formatter setRoundingMode: NSNumberFormatterRoundHalfUp]; //round up 


    NSString *result =[NSString stringWithString:[formatter stringFromNumber:decimalNumber]]; 
    [formatter release]; 
    return result; 
} 
+0

오류 메시지를 게시 할 수 있습니까? 먼저 실행 파일에 NSZombieEnabled를 사용하도록 설정하십시오. –

+0

그리고 formatterstringFromNumber는 어떻게 정의되어 있습니까? 코드를 실행할 수 없습니다. 코드를 추가하십시오. weightedAverage는 어떻게 초기화됩니까? –

+0

읽을 수 있어야합니다 : [formatter stringFromNumber – draion

답변

2

콜이 같은 방법은 :

newNumber = [self formattedStringWithDecimal:[NSDecimalNumber numberWithFloat:15.434]]; 

당신은 원시적를 전달하려했지만, 방법은 객체 예상 : NSDecimalNumber를. 정적 메서드 인 numberWithFloat를 사용하여 해당 유형의 객체를 만들어야합니다.

그리고 그런데

, 나는

newNumber = [NSString [email protected]"%.2f", 15.434]; 

코드의 적은 선으로 동일한 결과를 얻을 수있는 느낌이 듭니다. 번호가 귀하의 숫자를 반올림하지 않습니다.

1

당신은 오토 릴리즈 객체를 반환한다. 그것을 사용하는 함수가 그것을 유지합니까? 그렇지 않다면, 릴리스 될 수 있고 나중에 (나중에 실행되는 루프) 재사용하려고 시도 할 수 있습니다. 그 종류의 것을 발견하는 것을 가능하게하는 좀비에 동의했습니다.

관련 문제