Какао, ссылаясь на значения NSArray - PullRequest
0 голосов
/ 01 ноября 2010

У меня есть строка данных "широта, долгота, местоположение", хранящаяся в виде строки NSS.

Я хочу ссылаться на данные различными способами, поэтому я сохранил их в 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 Ответ

1 голос
/ 01 ноября 2010

Похоже, вы используете ivar Longitude в двух местах.В convertButtonPressed: вы извлекаете его из массива, используя objectAtIndex:, а в plotButtonPressed: вы повторно используете значение.

Обратите внимание, что когда вы получаете значение для Location, вы не используете метод, которыйначинается с new, alloc или copy, что означает, что, если вы хотите, чтобы значение находилось за пределами текущего пула автоматического выпуска, вы должны вручную retain или copy его.Вы не делаете этого здесь, поэтому некоторое время между convertButtonPressed: и plotButtonPressed:, пул авто-релиза выталкивается, и ваш объект освобождается, оставляя вас с опасным висящим указателем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...