Hallo,
ich habe schon ewig Zeit investiert, finde jedoch nicht heraus, wo der Hund begraben liegt. Ich hoffe es kann mir hier jemand weiterhelfen.
Ich arbeite an einer App wo man ein Array von Objekten hat. jedes dieser Objekte kann ein Array von Objekten haben und natürlich einen Zeiger auf das Master-Objekts. Wen ich versuche eines dieser Objekte zu kopieren. zeigt mir Instruments ein Memory-Leak.
@interface ListItem : NSObject <NSCopying> {
ListItem *MasterItem;
NSString *strText;
NSMutableArray *listItems;
BOOL boolDone;
NSDate *itemDate;
}
@property (nonatomic, retain) ListItem *MasterItem;
@property (nonatomic, retain) NSString *strText;
@property (nonatomic, retain) NSMutableArray *listItems;
@property (nonatomic, retain) NSDate *itemDate;
@property BOOL boolDone;
@end
@implementation ListItem
@synthesize strText, listItems, boolDone, MasterItem, itemDate;
- (id) init
{
if ( self = [super init] )
{
self.strText = nil;
self.listItems = nil;
self.itemDate = nil;
self.boolDone = FALSE;
self.MasterItem = nil;
}
return self;
}
-(id)copyWithZone:(NSZone *)zone
{
ListItem *another = [[[self class] allocWithZone:zone] init];
another.MasterItem = [MasterItem copyWithZone:zone];
another.listItems = [listItems copyWithZone:zone];
another.strText = [strText copyWithZone:zone];
another.itemDate = [itemDate copyWithZone:zone];
another.boolDone = boolDone;
return another;
}
-(void) dealloc
{
if (itemDate != nil)
[itemDate release];
}
Das Memory leakt wenn ich diese Zeilen aufrufen:
ListItem *itemMasterToSave = [itemMaster copy];
[itemMasterToSave release];
|