- (void)viewDidLoad {
BlueViewController *blueController = [[BlueViewController alloc] initWithNibName@"BlueView" bundle:nil];
self.blueViewController = blueController; //blueViewController set to var above
[self.view insertSubview:blueController.view atIndex:0];
[blueController release];
[super viewDidLoad];
}不能很好地理解这段代码。为什么我插入的是子视图blueController而不是self.blueViewController
另外,如果我不使用self,会有什么不同。甚至不确定为什么使用self。我将其解释为将当前视图控制器的blueViewController属性设置为blueController实例,但我为什么要这样做呢?我正在阅读的这本书并没有详细解释这些事情。这几乎就是猴子做的事情。
发布于 2011-06-07 20:20:04
不能很好地理解这段代码。为什么我插入的是子视图blueController而不是self.blueViewController
由于您已经执行了赋值:
self.blueViewController = blueController;这两个变量是相同的,所以
[self.view insertSubview:self.blueController.view atIndex:0];和你发布的代码是一样的。
如果我不使用
,会有什么不同。甚至不确定为什么使用self。我将其解释为将当前视图控制器的blueViewController属性设置为blueController实例,但我为什么要这样做呢?我正在阅读的这本书并没有详细解释这些事情。这几乎就是猴子做的事情。
如果你没有赋值给self.blueController,那么你的变量就只是该函数的一个局部变量。通过拥有一个属性self.blueController并在其中存储一个值,您可以在类的所有选择器(函数)中使用该值。
检查代码,您将看到self.blueController还用于其他函数。例如,在某些情况下,您可能决定隐藏该子视图,或者想要删除它,等等。所有这些都只有在您有一个指向类函数可访问的控制器的指针时才能实现。
发布于 2011-06-07 20:08:51
如果引用的是类的对象,则使用self。
发布于 2011-06-07 20:14:29
在初始化变量时,我们必须使用self。这将使blueViewController retainCount递增到1。
self.blueViewController = blueController;
在插入时,您也可以同时使用这两种方法。结果将是相同的。
self.view insertSubview:blueController.view atIndex:0;
self.view insertSubview:self.blueController.view atIndex索引:0;
https://stackoverflow.com/questions/6264892
复制相似问题