2009-12-21 65 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