Ios 弹出视图控制器会调用其所有属性的释放吗?

Ios 弹出视图控制器会调用其所有属性的释放吗?,ios,model-view-controller,properties,uiviewcontroller,retain,Ios,Model View Controller,Properties,Uiviewcontroller,Retain,我对IOS编程比较陌生。我已经完成了一门课程,所有的编程都是在没有ARC的情况下完成的,我有一个内存管理问题,我希望能够得到澄清 我的情况是这样的:我有一个应用程序,其中一个“父”视图控制器与另一个它将推送的“子”视图控制器保持连接。因此,当这个子视图被推送然后弹出时,它不会被释放,因为父视图会保留它。但即便如此,我认为这个子视图在弹出时仍然会调用其所有属性的release。我在它里面有(非原子,retain)属性,它必须对这些属性调用release,因为这些字段最终被释放,并且在弹出子视图时为

我对IOS编程比较陌生。我已经完成了一门课程,所有的编程都是在没有ARC的情况下完成的,我有一个内存管理问题,我希望能够得到澄清

我的情况是这样的:我有一个应用程序,其中一个“父”视图控制器与另一个它将推送的“子”视图控制器保持连接。因此,当这个子视图被推送然后弹出时,它不会被释放,因为父视图会保留它。但即便如此,我认为这个子视图在弹出时仍然会调用其所有属性的release。我在它里面有(非原子,retain)属性,它必须对这些属性调用release,因为这些字段最终被释放,并且在弹出子视图时为null,即使子视图控制器本身仍然存在


我认为只要我在先前的视图控制器中保持子视图控制器,即使它被弹出,它也不会释放它的任何属性,但我猜情况并非如此。我说的对吗?我找不到一个,但是有没有一个参考页,说明当弹出视图时调用的所有内容?

不应该是这样。弹出视图控制器时,它会将子对象的保留计数减少一。但是子控制器将不会释放其元素,直到在其retain达到零时调用其dealloc方法。如果正确地将其保留在父级中,则不应解除锁定

正如贝加斯姆斯所说,这不应该发生。看到你的代码会有帮助。在阅读了Bergasms的回复后,我发现了我的错误。这实际上是因为我使用retainproperties从其所属类外部设置对象,但使用变量从其所属类内部设置该对象。在推送和弹出某些视图时,以特定方式执行这些集合会导致特定对象被解除分配。我真的很难解释,但我肯定知道这就是原因。这个属性一开始就不需要管理对象的内存,所以我将它改为assign,问题已经解决。是的,我现在知道你是对的!经过进一步调查,我似乎无意中解除了对象的分配,方法是使用retain属性从其所属类外部设置对象,然后通过其所属类内部的变量设置该对象。以特定的方式执行这些集会使我的对象本身解除锁定,因为属性集将对旧对象调用release。我有过一些非常奇怪的撞车事件,现在变得更有意义了。