繁体   English   中英

“self”时使用的实例变量未通过Analyzer设置为“[(super或self)init ...]”的结果

[英]Instance variable used while 'self' is not set to the result of '[(super or self) init…]' via Analyzer

当我通过Analyzer测试我的代码然后得到:

'self'时使用的实例变量未设置为[(super或self)init ...]的结果

我的代码:

self = [super init];//initWithFrame:frame];
if (self) 
{
    tickerSymbol = [object valueForKey:@"TickerSymbol"];
    url = [object valueForKey:@"URL"];
    rssFeed = [object valueForKey:@"RSSFeed"];

    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"ClientInfoView" 
                                                             owner:nil 
                                                           options:nil];
    for (id currentObject in topLevelObjects)
    {
        if ([currentObject isKindOfClass:[ClientInfoView class]])
        {               
            self = (ClientInfoView *)currentObject;
            break;
        }
    }
    [self.clientNameLabel setText:[clientObject valueForKey:@"Name"]];
    [self.symbolLabel setText:[object valueForKey:@"TickerSymbol"]];

    //[self loadHistoricalInfo];
    self.getStock = [GetStockValue stockValueWithDelegate:self];
    [self loadInfo:object clientObject:clientObject];
    [self layoutLabels];

}

return self;
            self = (ClientInfoView *)currentObject;

这没有任何意义。 你永远不应该为[super init...]的结果重新分配self保存(并且在一些高级技术的情况下,这不是)。

您也应该永远不需要像这样浏览IB文件。 创建一个插座并建立连接,然后直接在您的代码中使用插座。

请注意,通常,您不应在init方法中加载接口。

这是因为self = (ClientInfoView *)currentObject; 我认为如何从你的nib内连接到你的对象有一些混乱。 而不是在nib文件中实例化对象并尝试交换对象,尝试从您的nib内连接到File's Owner ,然后将自己设置为所有者:

NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"ClientInfoView" 
                                                         owner:self 
                                                       options:nil];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM