Cocoa引用NSArray值

时间:2010-11-01 02:16:38

标签: cocoa cocoa-touch

我有一串数据“纬度,经度,位置”存储为NSString。

我想以不同的方式引用数据,因此我将其存储到NSArray中。

然后我将数据存储在易于阅读的NSString值中,并希望重复使用它们几次。

- (IBAction)convertButtonPressed:(id)sender
{
NSString *returnData = @"49.1002,-102.1253,12-03-22-W3";

explode = [returnData componentsSeparatedByString:@","];

Latitude    = [explode objectAtIndex: 0];
Longitude   = [explode objectAtIndex: 1];
Location    = [explode objectAtIndex: 2];
Query.text  = [NSString stringWithFormat:@"%@", Location];
Result.text = [NSString stringWithFormat:@"%@, %@", Latitude, Longitude];
}

然后我将这些值设置为UILabel值。我现在没有问题。我希望用户能够做的下一件事是将这些数据绘制到MKMapView上。所以我有一个UIButton设置来绘制数据。当它被点击时,一个新的ViewController滑入视图,我尝试传递数据,但是我没有运气。我的应用程序崩溃了,而不是传递数据。

- (IBAction)plotButtonPressed:(id)sender;
{
ShowMapViewController *showMap = [[ShowMapViewController alloc] initWithNibName:nil bundle:nil];

showMap.currentLocation = Location;

showMap.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:showMap animated:YES];
}

我想我的简单问题是......如何正确存储我的变量,以便将它们传递给我的ShowMapViewController。

1 个答案:

答案 0 :(得分:1)

看起来你在两个地方使用了ivar Longitude。在convertButtonPressed:中,您使用objectAtIndex:从数组中提取它,在plotButtonPressed:中重新使用该值。

请注意,当您获得Location的值时,您没有使用以newalloccopy开头的方法,这意味着,如果您希望值超出当前的自动释放池,您必须手动retaincopy它。你不是在这里做的,所以在convertButtonPressed:plotButtonPressed:之间的某个时间,自动释放池被弹出,你的对象被释放,留下一个危险的悬空指针。