2011-06-07 11 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

また、私は自己を使用しないとどうしますか?自己がなぜ使われているのかは分かりません。現在のView ControllerのblueViewControllerプロパティをblueControllerインスタンスに設定していると解釈しますが、なぜそれを行うのですか?私が読んでいる本は、そのようなことを詳しく説明していません。これはかなり猿です。

答えて

0

このコードはよくわかりません。

self.blueViewController = blueController; 

これら2つの変数が同じなので、

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

は次のようになります。あなたは割り当てを実行しているので、どのように来る私はサブビューblueControllerなくself.blueViewController

を挿入していますあなたが投稿したコードとまったく同じです。

また自己を使用しないとどのように違いますか?自己がなぜ使われているのかは分かりません。現在のView ControllerのblueViewControllerプロパティをblueControllerインスタンスに設定していると解釈しますが、なぜそれを行うのですか?私が読んでいる本は、そのようなことを詳しく説明していません。これはかなり猿です。

self.blueControllerに割り当てないと、変数はその関数のローカル変数に過ぎません。プロパティーをself.blueControllerにしてそこに値を格納することで、クラスのすべてのセレクター(関数)でその値を使用できます。

コードを確認すると、他の機能でもself.blueControllerが使用されていることがわかります。たとえば、ある時点で、そのサブビューを非表示にするか、削除したいかなどを決定するかもしれません。このすべては、クラス関数にアクセスできるコントローラへのポインタがある場合にのみ実行できます。

0

あなたがクラスのオブジェクトを参照している場合は、selfが使用されます。

0

変数を初期化するときには、自己を使用する必要があります。これにより、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 

を書き込むことにより、あなたはあなたがオブジェクトをratiningされることはありません自己を使用していないblueController object.Ifを保持し、あなたがラインにそれを解放した後

[blueController release]; 

プログラムができるだけ早くクラッシュしますあなたはそれを再び参照します。

関連する問題