我有以下代码段并且对该方法的调用无效!
@interface myVM(){
NSArray *results;
}
@property (nonatomic, strong) MyModel *model;
@end
@implementation myVM
- (instancetype)initWithItems{
self = [super init];
if (!self) return nil;
**[self.model loadInfo];**
_DeviceNameArray = self.model.DeviceNames;
}
该方法未被调用的原因是什么?
答案 0 :(得分:1)
您必须先分配并初始化它:
- (instancetype)initWithItems{
self = [super init];
if (!self) return nil;
self.model = [MyModel new]; // like this
[self.model loadInfo];
_DeviceNameArray = self.model.DeviceNames;
return self;
}
答案 1 :(得分:0)
self.model未初始化。如果你调试它,你会发现它是零。
答案 2 :(得分:0)
当您致电[self.model loadInfo];
时,model
属性尚未设置且为nil
。你可能想要这样的东西:
- (instancetype)initWithModel:(MyModel *)aModel {
self = [super init];
if (!self) return nil;
self.model = aModel;
[self.model loadInfo];
_DeviceNameArray = self.model.DeviceNames;
return self;
}
答案 3 :(得分:0)
您应该构建这样的自定义init方法,以提高可读性。
- (instancetype)initWithItems
{
self = [super init];
if (self) {
[self.model loadInfo];
_DeviceNameArray = self.model.DeviceNames;
}
return self;
}
问题是self.model
尚未在任何地方初始化。它只是一个不包含任何信息的属性 - 它是nil
。你需要在某处分配一些东西。
例如,将模型对象作为参数传递给initWithItem:(MyModel *)model
,然后将其分配给self.model。