Утечка памяти в небольшом коде с dealloc - PullRequest
0 голосов
/ 29 октября 2010

Помогите мне, пожалуйста, этот код правильный?Я имею в виду, нам действительно нужен метод 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

Ответы [ 2 ]

3 голосов
/ 29 октября 2010

Код верный, да, если у вас не было значения сделки, произошла бы утечка памяти.

Если вы указали фамилию или адрес электронной почты, строка будет сохранена.После этого экземпляр MyData может быть свободным, и без взлома фамилия или строка электронной почты будут по-прежнему зависать, но теперь у вас нет возможности сослаться на них - утечка.

0 голосов
/ 29 октября 2010

Пожалуйста, уточните свой вопрос еще раз. Вы собираетесь только объявить объекты?если вы делаете это, вам не нужно освобождать их.Если вы собираетесь объявлять и выделять им память в любой части класса u, для освобождения памяти потребуется метод dealloc.

, поэтому будьте осторожны с управлением памятью, поскольку оно обеспечивает утечки памяти, если вы их не освобождаете иесли вы собираетесь освободить или освободить какой-либо объект без выделения памяти, это приведет к сбою приложения.

...