У меня возникла небольшая проблема с приложением iPhone runkeeper. Практически во всех случаях приложение работает нормально, я разработал его так, чтобы добавить объекты CLLocation в массив, а затем сохранить этот массив объектов в базе данных MySQL. Затем, когда я открываю представление карты, я просто извлекаю массив с сервера и, немного манипулируя, использую данные для добавления выводов на карту.
Как я уже сказал, все это работает нормально и прекрасно работает на симуляторе и на устройстве, сидя за моим столом (и, между прочим, используя инструменты - без утечек). Однако, когда я протестировал приложение на устройстве и фактически вышел из дома и прошел 15 минут по улице, приложение вылетает в тот момент, когда объект CLLocationManager перестает обновляться и массив помещается в MySQL - почти наверняка (думаю) из-за проблем с памятью.
В таком случае, и, учитывая, что я относительный нуб, так что будьте осторожны, я ищу совет относительно разработки более эффективного способа хранения объектов в массиве, чтобы, вероятно, огромное количество сохраненного места дата не растает приложение.
Вот (выборка) кода, который я использую:
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation {
// примечание Я вынул код, определяющий, является ли объект CLocation допустимым, а также одну или две другие мелочи
if (recording == YES) {//the start button has been pressed but the stop button hasn't.
if (alreadyBeenRound == NO) {
if (firstRecord == YES) {
//create the pointsonRoute array
if (pointsOnRouteExists == NO) {
pointsOnRoute = [[NSMutableArray alloc] init];
pointsOnRouteExists = YES;
}
[pointsOnRoute removeAllObjects];
firstRecord = NO; //after setting first record, can move on
}
[pointsOnRoute addObject:newLocation];
//more stuff taken out here
alreadyBeenRound = YES;
} else {
[pointsOnRoute addObject:newLocation];
}
//I do release the array