0

助けてください、このコードは正しいですか?つまり、このクラスに本当にdeallocメソッドが必要なのか、なぜ必要なのか、そうでないのか。ここでdeallocを使用しないと、メモリリークが発生しますか?ありがとう!

    #import <Foundation/Foundation.h>


@interface MyData : NSObject
{
    @private
    NSString *name;
    NSString *surname;
    NSString *email;
    NSString *telephone;
    UIImage *image;
}

@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *surname;
@property (nonatomic, retain) NSString *email;
@property (nonatomic, retain) NSString *telephone;
@property (nonatomic, retain) UIImage *image;
@end

#import "MyData.h"


@implementation MyData

@synthesize name;
@synthesize surname;
@synthesize email;
@synthesize telephone;
@synthesize image;

- (void) dealloc
{
    [name release];
    [surname release];
    [email release];
    [telephone release];
    [image release];    

    [super dealloc];    
}
@end
4

2 に答える 2

3

コードは正しいです。deallocがないと、メモリリークが発生します。

名前または電子メールを設定すると、文字列が保持されます。MyDataインスタンスは解放され、名前のdeallocがない場合、または電子メール文字列はまだぶら下がっていますが、参照する方法がありません-リークです。

于 2010-10-29T09:38:38.993 に答える
0

もう一度質問を指定してください。オブジェクトを宣言するだけですか?これを行う場合は、それらの割り当てを解除する必要はありません。クラスuの任意の部分でメモリを宣言して割り当てる場合は、メモリを解放するためにdeallocメソッドが必要になります。

したがって、メモリ管理に注意してください。メモリを解放しない場合はメモリリークが発生し、メモリを割り当てずにオブジェクトのロックを解除または解放すると、アプリケーションがクラッシュします。

于 2010-10-29T10:32:13.177 に答える