Iphone iOS 6中的ARC与iOS 5中的ARC

Iphone iOS 6中的ARC与iOS 5中的ARC,iphone,ios5,ios6,automatic-ref-counting,Iphone,Ios5,Ios6,Automatic Ref Counting,我是ARC的新手。我的问题是,如果我们在视图控制器上创建一个strongtype属性,那么一旦导航控制器的popViewController发生,我们就需要将其设为nil 通常,我们会在viewDidUnload中这样做。但在iOS 6中,它已被弃用 那么我们在哪里使这个对象nil?苹果公司说要在didReceiveMemoryWarning中实现这一点,但并不是每次我们打开视图控制器时都会调用该方法。不用担心。在dealloc中,Objective-C运行时会自动将所有属性设置为nil。这适用

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

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


那么我们在哪里使这个对象
nil
?苹果公司说要在didReceiveMemoryWarning中实现这一点,但并不是每次我们打开视图控制器时都会调用该方法。

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

如果要保留引用对象的所有权,可以定义属性
strong


据我所知,您可能需要一个弱属性(当您的对象被其他人释放时,您不需要它,它可以被释放),或者可以在
viewdiddefine
方法中将其设置为nil,但正如Jim Puls所说,如果你在同两个视图控制器之间弹出/推动,那么UINavigationController中的指针不应该改变,只要它们没有被解除锁定。如果它们确实被解除锁定,那么它们中的所有内容也应该被解除锁定。最终可能会创建这些视图控制器的新副本,但这不应该是一个问题,因为只有在旧副本已解除锁定的情况下才能创建新副本。保留对象的唯一方法是视图控制器(或其中的对象)相互引用,从而导致它们被保留


strong
weak
之间的区别并不在于您需要手动将
strong
设置为零。相反,
关系将导致保留对象,而
关系则不会。这就是为什么代理通常被设置为
,因为您不希望代理保留其父对象(不是确切的父对象,而是它作为代理的对象)。

但是在我的应用中,如果我在同一个viewController之间多次切换,则会导致应用分配大小增加,从而导致崩溃。我认为这是因为ARC。然后你做了其他错误的事情,可能是创建了视图控制器的多个副本。当然,除非你发布你的代码,否则帮不上忙。代码我放不下。但我做的是简单的弹跳和推拉。点击一个按钮,我移动到AViewController,AViewController有后退按钮。我按下那个按钮,只是在玩这两个按钮