【发布时间】:2011-08-14 15:29:41
【问题描述】:
我是 Objective-C 的新手,似乎无法正确获取内存管理代码。我有以下代码:
Media* myMedia = [self.myMediaManager getNextMedia];
self.navigationItem.title = [self.myMediaManager getCategory];
[self.btnImage setImage:myMedia.imageFile forState: UIControlStateNormal];
[self.lblImage setText:myMedia.imageLabel];
//[myMedia release];
如果我取消注释以上行,我的应用程序会崩溃。实例化 myMedia 时是否需要做一些特别的事情?
编辑:
如果 myMediaManager 应该释放它,它什么时候会这样做。这是我的 getNextMedia 代码:
- (Media*) getNextMedia {
DLog(@"Start");
Media* nextMedia = [[Media alloc] init];
[self setNextMediaIndex];
if (self.mediaIndex > -1)
{
nextMedia = [mediaArray objectAtIndex: self.mediaIndex];
}
return nextMedia;
}
EDIT2:我修复了崩溃问题(我正在释放一个我不拥有的对象)。我仍然看到泄漏,似乎无法找到问题所在。
【问题讨论】:
-
请张贴
getNextMedia和getCategory的代码。否则,我们怎么知道?崩溃的发生是由于代码的各个部分的交互,而不仅仅是崩溃点上方的行。 -
由于他没有从
self中保留[self.myMediaManager getNextMedia],所以他不需要,它的retainCount仍然是一样的。 -
不要在方法前面加上
get;那应该只是nextMedia。 -
我阅读了有关内存管理的信息。所有的帖子都有助于我的理解。再次感谢!
标签: iphone objective-c memory-management