我正在使用自定義類來顯示錶視圖上的一些信息。 問題是,只要我滾動tableview內存泄漏...UITableView自定義類巨大泄漏
我想我的班上有什麼問題。
請看看:
@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是不可變的。不要在整個地方使用拷貝,並用'retain'而不是'copy'定義你的屬性。 – 2010-07-18 09:55:29
把'NSString'屬性當作副本很好,但是'alloc'它們沒用(你只是分配空字符串)。 – shosti 2010-07-18 10:37:46