2011-06-07 38 views
0
- (void)viewDidLoad { 

    BlueViewController *blueController = [[BlueViewController alloc] [email protected]"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插入子視圖 - iPhone

如果我不使用自我也有什麼區別。甚至不知道爲什麼使用自我。我將它解釋爲我將當前視圖控制器的blueViewController屬性設置爲blueController實例,但我爲什麼要這樣做。我正在閱讀的這本書沒有詳細解釋這些事情。這幾乎是猴子做的。

回答

0

沒有很好地理解這段代碼。爲什麼我正在插入子視圖blueController而不是self.blueViewController

既然你已經執行的任務:

self.blueViewController = blueController; 

這兩個變量是一樣的,所以

[self.view insertSubview:self.blueController.view atIndex:0]; 

會就像你發佈的代碼一樣。

如果我不使用自我也有什麼不同。甚至不知道爲什麼使用自我。我將它解釋爲我將當前視圖控制器的blueViewController屬性設置爲blueController實例,但我爲什麼要這樣做。我正在閱讀的這本書沒有詳細解釋這些事情。這幾乎是猴子做的。

如果你沒有分配給self.blueController,那麼你的變量只是該函數的一個簡單變量。通過擁有一個屬性self.blueController並在那裏存儲一個值,你可以在你的類的所有選擇器(函數)中使用該值。

檢查代碼,你會看到self.blueController也用於其他功能。例如,在某些時候,您可能會決定將該子視圖隱藏起來,或者想要將其刪除,等等。所有這些只有在指向您的類功能的控制器的指針時纔可以執行。

0

如果您指的是類的對象,則使用self。

0

初始化變量時,我們必須使用self。這會將blueViewController的retainCount增加爲1.

self.blueViewController = blueController;

插入時也可以同時使用兩者。結果將是相同的。

[self.view insertSubview:blueController.view atIndex:0];
[self.view insertSubview:self.blueController.view atIndex:0];

0

blueController是一個分配和初始化對象,而blueViewController只是一個指向BlueViewController類的指針。通過編寫

self.blueViewController = blueController 

您保留blueController object.If你行儘快釋放

[blueController release]; 

程序將會崩潰後,你不使用你自己不會ratining對象,你再次提到它。