2

我是 ARC 的新手。我的问题是,如果我们在视图控制器上创建类型属性,一旦导航控制器发生strong,我们需要将其设为 nil 。popViewController

通常,我们会在viewDidUnload. 但在 iOS 6 中,它已被弃用。

那么我们在哪里制作那个对象nil呢?Apple 说要这样做,didReceiveMemoryWarning但是每次弹出视图控制器时都不会调用该方法。

4

3 回答 3

4

别担心。您的属性将全部nil由 Objective-C 运行时自动设置为dealloc. 这适用于所有属性,而不仅仅是视图控制器上的插座。

于 2013-03-26T16:03:48.950 回答
1

strong如果您想保留被引用对象的所有权,您可以定义一个属性。

据我所知,您可能需要一个弱属性(当您的对象被其他人释放时,您不需要它并且可以释放它)或者可以在方法中将其设置为 nil 的解决viewDidDisappear方法,但正如 Jim Puls说,没有看到你的代码我的只是有根据的猜测......

于 2013-03-26T16:15:40.163 回答
0

如果您在相同的两个视图控制器之间弹出/推送,则 UINavigationController 中的指针不应该改变,只要它们没有被释放。如果它们确实被释放了,那么它们中的所有东西也应该被释放。您最终可能会创建这些视图控制器的新副本,但这不应该成为问题,因为您只是在旧副本已被释放时才创建新副本。保留对象的唯一方法是,如果您的视图控制器(或其中的对象)相互引用,从而导致它们被保留。

strong和之间的区别weak不是你需要手动设置strong为nil。相反,strong关系会导致对象被保留,而weak不会。这就是为什么通常将委托设置为的原因,weak因为您不希望委托保留其父级(不完全是父级,而是它是委托的对象)。

于 2013-03-26T16:49:05.887 回答