2012-08-11 108 views
0

当我得到一个内存警告我得到这个错误所以我的问题是,为什么productImages(这是一个scrollView)在此时释放?我不应该有机会转储它的子视图吗?iOS的内存管理内存不足的警告和viewDidUnload

它的定义是这样的:当viewDidUnload被调用

@property (weak, nonatomic) IBOutlet UIScrollView *productImages; 
+0

你使用ARC? – 2012-08-11 21:15:40

+0

是的,我正在使用ARC。 – soleil 2012-08-11 21:20:14

+0

然后这真的不应该成为一个问题,任何iOS决定它需要发布的东西都会为你发布。 – 2012-08-11 21:22:44

回答

0

您的视图控制器的观点已经被卸载。这意味着该视图的任何子视图将不再由该视图保留。我假设productImages是视图控制器视图的子视图。在这种情况下,如果您希望在卸载视图后它仍然可用,则必须声明productImagesstrong而不是weak

还有一点需要注意的是,开始重复在viewDidLoad中的定时器使其在viewDidUnload中无效时非常糟糕。在viewDidAppear:viewWillDisappear:中做得更好。看到这个博客文章的详细解释http://antonholmquist.com/blog/why-you-really-shouldnt-create-repeating-nstimers-in-init-or-viewdidload/