ios - Obj-C setter 返回 null

标签 ios objective-c properties

我正在制作一个简单的应用程序,这段代码一直给我带来问题。 这是我的属性(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/

相关文章:

iphone - iOS变量名和内存管理

java - Java 有静态泛型参数的好方法吗?

ios - SwiftUI:将 View 与 VStack 中另一个 View 的前缘和后缘对齐

ios - 是否可以退出从应用商店使用 iTunes 下载的应用程序?

ios - 当 iOS 上的状态栏高度发生变化时,基于约束的布局不会动画化

ios - VNCoreMLFeatureValueObservation VS 类 VNClassificationObservation

iphone - 如何防止 NSMutableDictionary 在 initWithContentsOfFile 时将我的长 NSString 转换为 NSNumber?

iphone - 为什么后台任务10分钟后结束

jquery - 如何通过 Jquery 禁用 asp listitem 复选框

javascript - 如何在创建对象时设置属性的属性