我有以下代码,仪器表明pushViewController方法在设备上有32个字节的内存泄漏。请你帮忙检查一下我打破了什么规则?我是否应该将某些“保留”更改为“分配”以进行申报?提前致谢!pushViewController内存泄漏
@interface GuideNewsViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> {
@private
NSFetchedResultsController *fetchedResultsController;
NSManagedObjectContext *managedObjectContext;
UITableView *tableView;
NewsListViewController *newsListViewController;
}
@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSFetchedResultsController *fetchedResultsController;
@property (nonatomic, retain) UITableView *tableView;
@property (nonatomic, retain, readonly) NewsListViewController *newsListViewController;
@implementation GuideNewsViewController
......
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
Member *member = [fetchedResultsController objectAtIndexPath:indexPath];
self.newsListViewController.managedObjectContext = self.managedObjectContext;
self.newsListViewController.title = member.memberName;
self.newsListViewController.author = member;
**// leak here**
[self.navigationController pushViewController:self.newsListViewController animated:YES];
}
......
@end
@interface NewsListViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> {
@private
NSFetchedResultsController *fetchedResultsController;
NSManagedObjectContext *managedObjectContext;
UITableView *tableView;
Member *author;
}
@property (nonatomic, assign) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain) UITableView *tableView;
@property (nonatomic, assign, readonly) NSFetchedResultsController *fetchedResultsController;
@property (nonatomic, assign) Member *author;
@end
我不认为这是不正确的。因为newsListViewController是一个成员,所以它应该从GuideNewsViewController的dealloc方法中释放,如下所示:[newsListViewController release]; 但你有一点,没有必要使它成为会员,在这种情况下最好使用委托(如有必要) – nacho4d 2010-09-05 08:14:37
@ nacho4d,托罗,谢谢你的回复。 self.newsListViewController将在GuideNewsViewController的dealloc方法中发布,设置newsListViewController的目的为GuideNewsViewController的属性重新使用它。 因为我是iphone的新开发者。您能否提供一些“使用委托通知自己”的示例代码?谢谢。 – mobguang 2010-09-05 08:54:38
我会试试看。谢谢大家! – mobguang 2010-09-05 16:55:08