我正在制作一个简单的应用程序,这段代码一直给我带来问题。 这是我的属性(property)。 在 ConverisonCalculator.h 中
@property (strong, nonatomic)NSString *startingUnit;
在 Viewcontroller.m 中,我正在使用这段代码,每次我使用 NSLog 时,我都会得到 (null)
_calculator.startingUnit = @"FPS";
这也是我对该对象的惰性实例化。
- (ConversionCalculator *)calculator{
if (!_calculator) _calculator = [[ConversionCalculator alloc]init];
return _calculator; }
我希望这足以让您回答我的问题。我也没有覆盖默认 setter 。
这是我的记录。
NSLog(@"%@", [_calculator startingUnit]);
最佳答案
_calculator.startingUnit = @"FPS";
这不使用您的属性(property)。这是对实例变量的直接访问,因此永远不会调用您的延迟加载代码。
如果您定义属性,总是通过属性访问它们:
self.calculator.startingUnit = @"FPS";
否则,您还不如使用实例变量。唯一的异常(exception)是在访问器方法本身内部,或者在 init 或 dealloc 方法中(在某些情况下)。
关于ios - Obj-C setter 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20944017/