MVCモデルをビルドしましたが(シンプルでなければなりませんが)、バックボタンを押すとまだメモリリークがあります。iOS:単純なMVCモデルのメモリリーク
Modelクラス:
@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。私は移入私の見解クラスで
それはそう:
の.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];
}
が、私は神聖な物事の全体の束を解放行うように見えますが、私このビューから前のパックボタンを押すと、メモリリークがポップアップします。
私は間違っていますか?
あなたのお手伝いをしていただきありがとうございます。
私はそれがあなたの問題の原因だとは思っていませんが、releaseをあなたのために行うために 'retain'とプロパティを定義した場合、つまり送信するのではなく' self.property = nil;リリースメッセージモデルクラスのNSStringsの – paulbailey
? – NCFUSN
通常、_all_(またはiVarを解放/消去したい場合は保持されません)のプロパティは保持されます。 nullに設定すると、自動的にリリースが呼び出されます。どこでもプロパティ(self.name)を使用して、iVar(name)をnullに設定するだけでなく、漏れを取得するようにしてください。 @synthesizeでiVarsの名前を変更することは、それらをまっすぐに保つことをお勧めします。 –