2

以下のように、他のクラスからメソッドを呼び出しています

@property (nonatomic,strong) CalculatorModel *calculatorModel;

double result = [self.calculatorModel result:operator];

ただし、このメソッドは呼び出し元からメッセージを受け取りません。ゲッターを自分で書くまで

- (CalculatorModel*)calculatorModel {
    if (!_calculatorModel) _calculatorModel = [[CalculatorModel alloc]init ];
    return _calculatorModel;
}

そしてそれは動作します。@property を実行すると、Objective-C がセッターとゲッターを自動的に生成することを覚えています。私が間違っている?

ありがとう

更新しました:ここに画像の説明を入力

4

3 に答える 3

3

Objective-C はセッターとゲッターを自動生成しますか?

まあ、むしろコンパイラですが、そうです、Clangの最近のバージョンにはこの機能があります。プロパティを手動で合成する必要はなくなりました。

于 2013-03-06T08:08:13.250 に答える
0

あなたが正しいです。ただし、 を使用してプロパティを初期化する必要があります[[Class alloc] init]。のプロパティを設定したようにNSMutableArray@property (nonatomic, strong) NSMutableArray *anArray;使用する前に次のanArrayように初期化する必要があります。_anArray = [[NSMutableArray alloc] initWithCapacity:10];

メソッドは遅延インスタンス化と呼ばれ、呼び出す前- (CalculatorModel*)calculatorModelにジョブを引き継ぎます。これ[[Class alloc] init]により、パフォーマンスとメモリ制御の両方が向上します。

于 2013-03-06T08:22:01.323 に答える
0

xCode4.5 から手動でプロパティを合成する必要がなくなったようです。IDE がお手伝いします。警告が表示されるので、自分でコードを追加する必要があります。

于 2013-03-06T08:17:33.080 に答える