Я протечки память об этом:Возвращение объектов с autorelease, но я до сих пор утечка памяти
мой пользовательский класс:
+ (id)vectorWithX:(float)dimx Y:(float)dimy{
return [[[Vector alloc] initVectorWithX:dimx Y:dimy] autorelease]; }
- (Vector*)add:(Vector*)q {
return [[[Vector vectorWithX:x+q.x Y:y+q.y] retain] autorelease]; }
в приложение делегата I инициируют его:
Vector *v1 = [[Vector alloc] initVector];
Vector *v2 = [[Vector alloc] initVector];
Vector *vtotal = [[v1 add:v2] retain];
[v1 release];
[v2 release];
[vtotal release];
Как это утечки? Я выпускаю или автоматически проверяю их. Приложение немедленно сработает, если я не сохраню их, из-за раннего выпуска, я думаю. Он также падает, если я добавлю еще один релиз.
Вы надеваете 't нужно сохранить/автоопределить новый вектор в add, просто вернуть результат из [Vector vectorWithX: Y:]. Можете ли вы опубликовать код для initVector и т. Д.? –
Большое спасибо за ответ, я уже удалил сохранение/авторекламу от добавления, но все еще течет. вектор инициализации: (синтезируется x и y) - (id) initVector {self = [super init]; if (self) {x = 0; y = 0; } return self; } – gok