Cocoa touch 自动释放/分配理解

Cocoa touch 自动释放/分配理解,cocoa-touch,cocoa,properties,autorelease,assign,Cocoa Touch,Cocoa,Properties,Autorelease,Assign,好的,我真的使用自动释放/自动签名,但我现在有一个问题,我不明白。这可能是很明显的为什么它不工作,但我真的希望你解释给我听 所以我有一个UIViewController,我初始化如下: controller = [[[LBLogInViewController alloc] initWithNibName:@"LBLogInViewController" bundle:nil] autorelease]; 之后,我将其设置为属性(非原子,赋值): 为什么这一财产不能持续?我设置的值是super

好的,我真的使用自动释放/自动签名,但我现在有一个问题,我不明白。这可能是很明显的为什么它不工作,但我真的希望你解释给我听

所以我有一个UIViewController,我初始化如下:

controller = [[[LBLogInViewController alloc] initWithNibName:@"LBLogInViewController" bundle:nil] autorelease];
之后,我将其设置为属性(非原子,赋值):


为什么这一财产不能持续?我设置的值是superview的控制器,因此它不会被释放。它显然适用于(非原子,保留),但我想知道为什么分配在这里不起作用。

检查您的@synthesis、@property和setingsviewcontroller ivar没有拼写错误(完全相同)。

如果控制器声明为(非原子,保留),并且您使用“controller=”而不是“self.controller=”,您将不会增加保留计数,因为您将绕过setter直接进入实例变量。

您是否使用与alloc相同的方法执行controller.settingsViewController=self?是否使用“controller=”或“self.controller=”?控制器是如何在头文件中声明的?是的,就在初始化之后。在控制器初始化之后,我将其设置为属性“self.contentViewController=controller”,它是非原子的,assign.no,它不会被解除分配。没有看到我的注释吗?我首先初始化它,然后使用setter设置属性。您可以发布显示如何声明控制器和settingsViewController的头文件吗?
controller.settingsViewController = self;