我正在制作一个简单的应用程序,这段代码给了我一些问题。
这是我的财产。
在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方法内部(在某些情况下)。