Я создал (должен быть простой ...) модель MVC, но у меня все еще есть утечка памяти при нажатии кнопки возврата.iOS: утечка памяти в простой модели MVC
класс Модель: .h
@interface Nominal : NSObject {
int nominalID;
NSString *nominal;
NSString *nominalImg;
NSString *nominalName;
}
@property(nonatomic)int nominalID;
@property(nonatomic,retain)NSString *nominal;
@property(nonatomic,retain)NSString *nominalImg;
@property(nonatomic,retain)NSString *nominalName;
@end
.m
@implementation Nominal
@synthesize nominal,nominalID,nominalImg,nominalName;
-(void)dealloc
{
[self.nominal release];
[self.nominalImg release];
[self.nominalName release];
}
@end
Я выпустите строки, а также.
На мой взгляд, класс я заполнить его так:
.h
@interface Nominals : UIViewController {
...
NSMutableArray *nominalsArr;
...
}
@property(retain,nonatomic)NSMutableArray *nominalsArr;
.m
- (void)viewWillAppear:(BOOL)animated
{
[[self navigationController]setToolbarHidden:YES animated:YES];
DBAccess *dbAccsess=[[DBAccess alloc]init];
self.nominalsArr=[dbAccsess returnNominals:subCountryID];
[dbAccsess closeDataBase];
[dbAccsess release];
[super viewWillAppear:animated];
}
- (void)dealloc
{
[nominalsArr release];
[self.navigationController release];
[super dealloc];
}
Похоже, я выпустите весь пучок святынями, но когда я push pack от этого вида до предыдущего, появляется сообщение об утечке памяти:
Что я делаю неправильно?
Вы помогаете получить высокую оценку.
Я не думаю, что это причина вашей проблемы, но обычно, если вы определили свойство как 'keep', чтобы позволить релизам быть выполненными для вас, то есть' self.property = nil; 'вместо отправки сообщение о выпуске. – paulbailey
для NSStrings в классе модели? – NCFUSN
Ну, обычно для _all_ (или нет, если вы предпочитаете освобождать/очищать iVar) сохраненные свойства. Установка их в null вызовет разблокировку автоматически. Просто обязательно используйте свойство (self.name) всюду, а не просто установите iVar (имя) в null или вы получите утечку. Переименование iVars в @synthesize - хорошая идея, чтобы держать их прямо. –