1

我是 iPhone 开发新手,遇到 EXC_BAD_ACCESS 错误。

在我的 .h 文件中,我声明:

NSString *myString;

在我的 .m 文件中,我有两种方法:

1.我做的时候CLLocationManager接口的(void)locationManager:

myString = [NSString stringWithFormat:@"%lf",loc.longitude];
NSLog(@"%@",myString); // it works

2.A (void)sendPosition 方法:

NSLog(@"%@",myString); // EXC_BAD_ACCESS

你能帮助我吗?

4

2 回答 2

2
  1. 保留你的字符串。

    myString = [[NSString stringWithFormat:@"%lf",loc.longitude] 保留];

  2. 然后在这个类的dealloc方法中(或添加它)

    -(void) dealloc{ [super dealloc]; [myString 发布]; }

这应该可以解决它,假设您已经在 .h 文件中声明了 myString 。

于 2010-07-26T10:23:31.500 回答
1

您是否将 myString 保留在 locationManager 方法的其他位置?如果没有,你应该,然后在你的 -dealloc 方法中释放它。否则,它可能会消失,就像我怀疑现在正在发生的那样。请阅读内存管理规则

我建议创建一个属性,该属性会在您的类中自动保留该值,然后在创建字符串时使用点符号分配它。同样,在您的 dealloc 方法中释放它。这些天对于这种类型的代码来说,这是惯用的。

于 2010-07-26T10:20:28.153 回答