4

以下のプロパティ宣言が与えられた場合、方法 (A) は方法 (B) とまったく同じように機能しますか? self.yellowViewController = yellcon_New;古いオブジェクトが解放され、新しいオブジェクトが保持されるように、セッターを介して行われていることを確認したいだけです。

// INTERFACE
@property(nonatomic, retain) YellowViewController *yellowViewController;

// IMPLEMENTATION (A)
self.yellowViewController = yellcon_New;

// IMPLEMENTATION (B)
[self setYellowViewController:yellcon_New];
4

3 に答える 3

5

これはすべて正しいです:

self.yellowViewController = yellcon_New;

[self setYellowViewController:yellcon_New];

同じように働きます。興味深いことを追加したいと思います:使用するとき

yellowViewController = yellcon_New;

セッターメソッドを経由せずに、値を ivar に直接関連付けます。

だからあなたが持っているなら

-(void)setYellowViewController:(YellowViewController*)theYellowViewController;
{
    NSLog(@"Setting the yellow view controller");
    [yourWife askFor:beer];
    ...whatever...
    ...set the yellowViewController (retain in your case)
}

通話中

self.yellowViewController = yellcon_New;

[self setYellowViewController:yellcon_New];

セッターメソッドを使用します(そしてメッセージをログに記録し、妻にビールを持ってきてもらいます)

しかし

yellowViewController = yellcon_New;

しない。

場合によっては、これを知ることは興味深いことです。

于 2010-02-05T18:03:06.483 に答える
4

はい、A ラインと B ラインは同じように機能します

このプロパティに @synthesize の代わりに @dynamic を使用し、setter メソッドの実装に NSLog メッセージを入れることで確認できます。

于 2010-02-05T14:27:22.597 に答える
1

はい。@synthesizeそのプロパティにモノを使用している場合は、-setYellowViewController:メソッドを作成しています。

于 2010-02-05T14:28:08.037 に答える