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 会自动生成setter 和getter。我错了吗?

谢谢

更新:在此处输入图像描述

4

3 回答 3

3

Objective-C 会自动生成 setter 和 getter 吗?

好吧,而是编译器,但是是的,Clang 的最新版本具有此功能。您不再需要手动合成属性。

于 2013-03-06T08:08:13.250 回答
0

似乎您不再需要从 xCode4.5 手动合成属性。IDE 将帮助您完成。但可怕的是,如果您在 xCode4.3 或 xCode4.4 上打开项目,它将无法正常工作,很多将出现警告,然后您应该自己添加代码。

于 2013-03-06T08:17:33.080 回答
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 回答