J'utilise une classe personnalisée pour afficher des informations sur une vue de table. Le problème est que tant que je fais défiler la tableview fuit la mémoire ...UITableView fuite de classe personnalisée énorme
Je suppose que j'ai quelque chose de mal à ma classe.
S'il vous plaît consulter:
@interface Person : NSObject {
NSString *name;
NSString *surname;
NSString *address;
NSString *email;
}
@property (nonatomic, copy) NSString *name, *surname, *address, *email;
@implementation Person
@synthesize name, surname, address, email;
-(id)init {
[super init];
name = [[NSString alloc] init];
surname = [[NSString alloc] init];
address = [[NSString alloc] init];
email = [[NSString alloc] init];
return self;
}
- (void)dealloc
{
[name release];
[surname release];
[address release];
[email release];
[super dealloc];
}
#import "Person.h"
@interface Group : NSObject {
NSString *groupTitle;
NSMutableArray *persons;
}
@property (readwrite, copy) NSString *groupTitle;
- (void)addPerson:(Person *)person;
- (void)removeAll;
- (NSArray *)getPersons;
- (int)PersonsCount;
@end
@implementation Group
@synthesize groupTitle;
-(id)init {
[super init];
persons = [[NSMutableArray alloc] init];
return self;
}
-(void)addPerson:(Person *)person {
[persons addObject:person];
}
-(void)removeAll {
[persons removeAllObjects];
}
-(NSArray *) getPersons {
return [persons copy];
[persons release];
}
-(int)personsCount {
return [persons count];
}
-(void)dealloc {
[groupTitle release], groupTitle = nil;
[persons release], persons = nil;
[super dealloc];
}
@end
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
…….
Group *groupForRow = [[Group alloc] init];
Person *personForRow = [[Person alloc] init];
personForRow = [[groupForRow getPersons] objectAtIndex:indexPath.row];
_personName = personForRow.name;
_personSurname = personForRow.surname;
_personAddress = personForRow.address;
_personEmail = personForRow.email;
[groupForRow release], groupForRow = nil;
[personForRow release], personForRow = nil;
…..
return cell
NSString est immuable. N'utilisez pas de copie partout et définissez vos propriétés avec 'retain' au lieu de' copy'. –
C'est bien d'avoir une propriété 'NSString' en tant que copie, mais' les allouer est inutile (vous allouez juste des chaînes vides). – shosti