我正在制作一个简单的应用程序,这段代码给了我一些问题。
这是我的财产。
在ConverisonCalculator.h中

@property (strong, nonatomic)NSString *startingUnit;


在Viewcontroller.m中,我正在使用此代码,每当我NSLog时,我都会得到(空)

_calculator.startingUnit = @"FPS";


这也是我对对象的惰性实例化。

- (ConversionCalculator *)calculator{
if (!_calculator) _calculator = [[ConversionCalculator alloc]init];
return _calculator; }


我希望这足以让您回答我的问题。我也不会覆盖默认设置器。

这是我的日志。

NSLog(@"%@", [_calculator startingUnit]);

最佳答案

_calculator.startingUnit = @"FPS";


这不使用您的财产。这是对实例变量的直接访问,因此永远不会调用您的延迟加载代码。

如果定义属性,请始终通过属性访问它们:

self.calculator.startingUnit = @"FPS";


否则,您不妨使用实例变量。唯一的例外是访问器方法本身内部,或者init或dealloc方法内部(在某些情况下)。

09-07 13:48