2009-12-21 2 views
0

왜 이런 일이 일어날 지 모른 채 살 수는 없습니다. 문제 내가 여기 Corelocation를 사용하여 아이폰 응용 프로그램이 있습니다 :IPhone Float to String 문제

GPSLocation.m - 전송 긴/위도 좌표

(싱글 클래스) 클래스 UserSettings.m에 수레가있는

_

UserSettings.m는 - 그런 다음에서 미리 정의 된 문자열로 값을 캐스팅float

예 : strLongitude = [NSString stringWithFormat : @ "% f", paramLong];

문자열을 잘 추적 할 수 있습니다. NSLog (@ "Longitude string is % @", strLongitude); : strLongitude

  1. 에 대한

    일부 노트는

  2. 속성 (비 원자, 은 유지)
  3. 지금 문제를

을 합성으로 정의 된 헤더 파일에 다른 클래스에서이 변수가 필요한 경우 두 가지 방법 중 하나를 사용할 수 있습니다. getter [UserSettings getLongitude] 또는 [UserSettings strLongitude] 속성에 액세스하십시오.

그런 다음이 문자열을 추적하면 가끔 잘못된 액세스 오류 또는 임의의 가비지가 발생합니다. float % F로 문자열을 추적하면 잘 작동합니다.

왜 이런 일이 발생합니까? 문자열의 기본값은 변수의 원래 데이터 유형으로 다시 설정됩니다.

도움을 주시면 감사하겠습니다.

답변

2

strLongitude를 유지해야 할 수 있습니다.

+0

입니다 ... NSUserDefaults 매우 유사 소리! @property (nonatomic, retain) NSString * strLongitude; –

+1

하지만 자기를 사용해야합니다 : self.strLongitude = [NSString stringWithFormat : @ "% f", paramLong]; (유지하는 setter를 호출). 걷어차기만 시도해보십시오. strLongitude = ...; [strLongitude 유지]; 어떤 차이가 있는지 확인하십시오. – Jeff

+0

빙고! 나는 세터를 부르지 않았다. self.strLongitude는 정상적으로 작동했습니다. 고마워요! –

1

일부 코드는 실수로 float 인수로 문자열 setter를 호출하는 것처럼 들립니다.

1

나는 이것이 당신의 질문에 직접적으로 답하고 있지 않다는 것을 알지만 왜 좌표에 문자열을 저장합니까?

왜 그걸 저장하지 않으시겠습니까? 예를 들어,

@interface UserSettings 
{ 
    float longitude; 
} 

@property (nonatomic, assign) float longitude; 

@end 

또한, 당신의 UserSettings 클래스는

+0

플로트가있는 웹 서비스 용 POST를 수행 할 수 없습니다. 그래서 바로이 호출을하기 전에 float를 클래스 im으로 가져 와서 webservices를 호출 한 다음 문자열로 변환합니다. 예 userSettings 클래스를 NSUserDefaults로 바꿀 수는 있지만 내 질문에는 대답하지 않습니다. 이 낮은 수준의 프로그래밍은 저에게 새로운 것이고이 문제가 발생하는 이유를 이해하려고합니다. –

+0

지금까지 캐스팅은 클래스에 상대적이라고 결정했습니다. 다른 클래스의 변수에 액세스하려고하면 캐스팅 데이터 유형은 유지되지만 원래대로 돌아갑니다. 내가이 모든 것을 망쳤다는 것을 누가 알 겠어. 나는 이유를 알고 싶다. –