委托init调用的结果必须立即返回或分配给'self'

时间:2014-09-11 14:58:31

标签: objective-c object self

在我的项目中,我有一个声明以下方法的类:

-(id)initWithSections:(NSUInteger)s rows:(NSUInteger)r
{
        if(self=[self init])
        {sections = [[NSMutableArray alloc] initWithCapacity:s];

            for (int i=0; i<=s; i++){
                NSMutableArray *rows = [NSMutableArray arrayWithCapacity:r];
                for (int j=0; j<=r; j++){
                    [rows insertObject:[NSNull null] atIndex:j];
                }
                [sections addObject:rows];
            }
        }

    return self;
}

我还有一个调用上述方法的方法:

-(id)OneMoreMethod:(NSMutableArray *)obj1 :(NSMutableArray *)obj2
{
    NSInteger b = 3;

   [self initWithSections:b rows:b];//The result of a delegate init call must be immediately returned or assigned to 'self'

    return  self;
}

我收到了错误:

  

委托初始调用的结果必须立即返回或分配给自己&#39;

我没有看到错误。最有趣的是在其他项目中建立成功。

1 个答案:

答案 0 :(得分:0)

由于initWithSections:rows:返回&#34; self&#34;,它要求你使用该自我。你只是忽视了自我&#34;从那个方法返回。

它看起来并不好,而且它可能会导致另一个问题,但这将解决原来的问题:

self = [self initWithSections:b rows:b];

return self;