这是我的代码:
- (void)viewDidLoad{
[super viewDidLoad];
self.authorList = [[NSArray alloc]
initWithObjects:@"Christie, Agatha",
@"Archer, Jeffrey", nil];
self.title = @"Authors";
}
我在分配和初始化数组作者列表时遇到内存泄漏。我试图将autorelease放在作者列表上,但它说“对象发送 - 自动释放发送了太多次”。我还在学习记忆管理。
格拉西亚斯。
答案 0 :(得分:5)
authorList
的setter方法将保留数组,因此您需要在调用后立即释放它:
NSArray *list = [[NSArray alloc]
initWithObjects:@"Christie, Agatha",
@"Archer, Jeffrey", nil];
self.authorList = list;
[list release];
或者你可以自动发布它:
self.authorList = [[[NSArray alloc]
initWithObjects:@"Christie, Agatha",
@"Archer, Jeffrey", nil] autorelease];
答案 1 :(得分:0)
你在课堂上写过dealloc方法吗?
如果您没有使用ARC http://cocoa-touch.blogspot.ie/2008/09/memory-management-on-iphone.html
答案 2 :(得分:0)
您不应直接分配属性对象。
您应该像这样分配:
- (void)viewDidLoad{
[super viewDidLoad];
NSArray *tempArray = [[NSArray alloc]
initWithObjects:@"Christie, Agatha",
@"Archer, Jeffrey", nil];
self.authorList = tempArray;
[tempArray release];
NSString *titleString = @"Authors";
self.title = titleString;
[titleString release];
}
答案 3 :(得分:0)
使用此
self.authorList = [[[NSArray alloc]
initWithObjects:@"Christie, Agatha",
@"Archer, Jeffrey", nil] autorelease];