私は自分のプロジェクトをxcode4.2(古いバージョン)で行っています。私のアプリケーションでは、アプリのライフサイクル全体で使用するために、変数、配列をdtoクラスに設定するだけです。だから私はこのようなプロパティで設定しました。
AppDTO(NSObjectのサブクラス)
AppDTO.h
@property(nonatomic,retain)anotherAppDTO *aAppDTO;
@property(nonatomic,retain)NSMutableArray *array1;
@property(nonatomic,retain)NSMutableArray *array2;
@property(nonatomic,retain)NSString *string1,*string2,*string3;
AppDTO.m
- (id)init
{
self = [super init];
if (self) {
self.aAppDTO = [[anotherAppDTO alloc]init];
self.array1 = [[NSMutableArray alloc]init];
self.array2 = [[NSMutableArray alloc]init];
self.string1 = @"Hello";
self.string2= @"Hai";
}
}
-(void)dealloc
{
if(array1 != nil)
{
[array1 release];
array1 = nil;
}
if(array2 != nil)
{
[array2 release];
array2 = nil;
}
[aAppDTO release];
aAppDTO = nil;
[super dealloc];
}
Xcode 4.3.2でアプリを分析すると、self.array1とself.array2でメモリ警告が表示されます(ラインに割り当てられたオブジェクトのリークの可能性があります…。)が、self.array1をarray1に変更すると、警告が消えます。
自己を使用する理由は何ですか。@property(nonatomic、retain)を変数(array1、array2、string1、string2など)に設定した場合、selfを使用する必要がありますか?
また、deallocメソッドでは、[self.array1 release]を使用したくないと聞きましたが、代わりに[array1release]を使用できます。それが正しいか?
Deallocメソッドで文字列を解放する必要がありますか?
また、deallocメソッドでaAppDTOをリリースしています。別のAppDTOクラスにいくつかのオブジェクトを割り当てた場合、[aAppDTOrelease]メソッドを呼び出すと自動的に解放されますか。
誰かが私を明確にすることができますか?
どうもありがとう、アニッシュ