У меня утечка памяти с инструментами в классе, который я создал. Это класс:
.h
#import <Foundation/Foundation.h>
@interface RDItem : NSObject {
}
@property int Id;
@property (nonatomic, retain) NSString *nombre;
@property (nonatomic, retain) NSString *thumbnail;
@property (nonatomic, retain) NSString *thumbnailPush;
@property int defaultColorId;
@property int idTema;
@property (nonatomic, retain) NSString *selectedFrame;
@property (nonatomic, retain) NSString *mergedFrame;
@property (nonatomic, retain) NSMutableArray *colors;
@property (nonatomic, retain) NSMutableArray *textures;
@property (nonatomic, retain) NSMutableArray *styles;
-(void)initialize;
@end
.m
#import "RDItem.h"
@implementation RDItem
@synthesize Id;
@synthesize nombre;
@synthesize thumbnail;
@synthesize thumbnailPush;
@synthesize defaultColorId;
@synthesize idTema;
@synthesize selectedFrame;
@synthesize mergedFrame;
@synthesize colors;
@synthesize textures;
@synthesize styles;
-(void)initialize
{
colors = [[NSMutableArray alloc] init];
textures = [[NSMutableArray alloc] init];
styles = [[NSMutableArray alloc] init];
}
-(void)dealloc
{
[colors release];
[textures release];
[styles release];
}
@end
В этом классе есть 3 NSMutableArray, где я буду хранить данные. Чтобы подготовить и инициализировать этот класс, я разработал метод initialize, в котором создаются 3 массива. В деаллок выпускаются.
Инструмент утечки обнаруживает утечку каждый раз, когда этот класс используется, потому что метод initialize.
Каков наилучший способ инициализации этих массивов?
Спасибо.
EDIT
Привет, я решил проблему с помощью RDItem, но теперь появляется еще один ученик в очень похожем классе:
.h
#import <Foundation/Foundation.h>
@interface RDTema : NSObject {
}
@property int Id;
@property (nonatomic, retain) NSString *idManifest;
@property (nonatomic, retain) NSString *idTema;
@property (nonatomic, retain) NSString *nombre;
@property (nonatomic, retain) NSString *thumbnail;
@property (nonatomic, retain) NSString *thumbnailPush;
@property (nonatomic, retain) NSMutableArray *items;
@property (nonatomic, retain) NSMutableArray *colors;
@property (nonatomic, retain) NSMutableArray *textures;
@property (nonatomic, retain) NSMutableArray *styles;
-(void)initialize;
@end
.m
#import "RDTema.h"
@implementation RDTema
@synthesize Id;
@synthesize idManifest;
@synthesize idTema;
@synthesize nombre;
@synthesize thumbnail;
@synthesize thumbnailPush;
@synthesize items;
@synthesize colors;
@synthesize textures;
@synthesize styles;
-(void)initialize
{
/*
self.items = [[NSMutableArray alloc] init];
self.colors = [[NSMutableArray alloc] init];
self.textures = [[NSMutableArray alloc] init];
self.styles = [[NSMutableArray alloc] init];
*/
self.items = [NSMutableArray array];
self.colors = [NSMutableArray array];
self.textures = [NSMutableArray array];
self.styles = [NSMutableArray array];
}
-(void)dealloc
{
[idManifest release];
[idTema release];
[nombre release];
[thumbnail release];
[thumbnailPush release];
[items release];
[colors release];
[textures release];
[styles release];
[super dealloc];
}
Теперь я получаю утечку в следующих строках:
self.items = [NSMutableArray array];
self.colors = [NSMutableArray array];
self.textures = [NSMutableArray array];
self.styles = [NSMutableArray array];
Кто-нибудь может объяснить, почему сейчас происходит в этом классе, а не в классе RDItem? Такие же :(
Спасибо.