2010-09-07 4 views
0

Я пишу приложение, которое отображает точку на графике, и использую метод ниже, чтобы вернуть массив этих точек. У меня есть два вида, каждый из которых отображает разные графики, но оба имеют этот идентичный метод. Какой бы граф ни использовался, второй приводит к сбою приложения при достижении строки «NSArray * reading ...». Я не могу понять, почему, но я предполагаю, что это может иметь какое-то отношение к управлению памятью. Есть ли у кого-нибудь идеи, как я могу это решить?Метод вызова дважды сбрасывает приложение

-(NSArray*)loadPoints{ 

    Vehicle *vehicle = [DataModel theDataModel].currentVehicle; 

    NSArray *readings = [(NSArray*)vehicle.rVehicleMileage autorelease]; 

    NSSortDescriptor *descriptor = [[[NSSortDescriptor alloc] initWithKey:@"dteDate" ascending:NO] autorelease]; 

    readings = [readings sortedArrayUsingDescriptors:[NSArray arrayWithObject:descriptor]]; 

    return readings; 
} 

Спасибо, Уильям

ответ

4
NSArray *readings = [(NSArray*)vehicle.rVehicleMileage autorelease]; 

Вы не должны вызывать -autorelease на какой-то объект, который вы не владеете. Удалите это -autorelease и он должен работать корректно.

+0

Спасибо KennyTM, который работал отлично, у меня создалось впечатление, что все, что вы вернули из метода, должно быть автореализовано, но я думаю, что не – williamb

+0

Массив, созданный 'sortedArrayUsingDesriptors: ** **, уже автореализован. Если вы действительно хотели этого, вы могли бы сделать 'return [[readings сохранить] autorelease];', но это не обязательно. – bbum

+0

Спасибо за ваши отзывы, я обнаружил, что действительно полезно – williamb