2009-12-21 63 views
0

如果不知道爲什麼會發生這種情況,我不能再過一天。我一直在使用Corelocation這裏的iPhone應用程序的問題:IPhone浮點到字符串問題

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]

然後,當我跟蹤出這個字符串時,我有時會得到一個badaccess錯誤或隨機垃圾。如果我將字符串追蹤爲浮點數%F,則工作得很好。

這是怎麼發生的?該字符串默認返回到變量的原始數據類型。

任何幫助,將不勝感激。

回答

2

強度可能需要保留。

+0

啊! @屬性(非原子,保留)NSString * strLongitude; – 2009-12-21 23:14:58

+1

但您需要使用self: self.strLongitude = [NSString stringWithFormat:@「%f」,paramLong]; 來調用setter(它保留)。只是踢,試試: strLongitude = ...; [strLongitude retain];看看有沒有什麼區別。 – Jeff 2009-12-22 03:04:28

+0

賓果!我沒有調用setter。 self.strLongitude工作得很好。謝啦! – 2009-12-22 22:36:28

1

這聽起來像是一些代碼偶然會用float參數調用字符串setter。

1

我意識到這不是直接回答你的問題,而是爲什麼把字符串存儲起來?

爲什麼不把它們存儲爲浮標?例如,

@interface UserSettings 
{ 
    float longitude; 
} 

@property (nonatomic, assign) float longitude; 

@end 

此外,您UserSettings類的聲音非常相似...... NSUserDefaults的

+0

我不能做一個帶浮動的Web服務的POST。所以就在我進行這個調用之前,我把float帶入類中,讓webservices調用並將其轉換爲字符串。 是的我可以用NSUserDefaults替換我的userSettings類,但是這並不能回答我的問題。這個低級別的編程對我來說是新的,我試圖理解爲什麼會出現這個問題。 – 2009-12-21 23:10:28

+0

到目前爲止,我已經確定鑄造是相對於我所投入的類而言的。如果我嘗試訪問來自不同類的變量,它不會保留其鑄造數據類型,但會恢復爲原始類型。誰知道我全都搞不清這個。我只想知道爲什麼。 – 2009-12-21 23:13:25