方法没有在iOS中调用

时间:2014-11-13 09:19:02

标签: ios methods

我有以下代码段并且对该方法的调用无效!

  @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;


 }

该方法未被调用的原因是什么?

4 个答案:

答案 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。