Переменная экземпляра, используемая в то время, как «self» не установлена ​​на результат «[(super или self) init…]» через Analyzer - PullRequest
0 голосов
/ 24 марта 2012

Когда я тестирую свой код с помощью 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;

Ответы [ 2 ]

2 голосов
/ 24 марта 2012
            self = (ClientInfoView *)currentObject;

Это не имеет никакого смысла.Вы никогда не должны переустанавливать self для сохранения результата [super init...] (и в случае некоторых продвинутых методов, которых это не так).

Вам также никогда не придется проходитьфайл IB такой.Создайте розетку и установите соединение, затем используйте розетку непосредственно в своем коде.

Обратите внимание, что в общем случае не следует загружать интерфейс методами init.

0 голосов
/ 24 марта 2012

Это из-за self = (ClientInfoView *)currentObject;. Я думаю, что есть некоторая путаница относительно того, как соединиться с вашим объектом изнутри вашего nib. Вместо того, чтобы создавать экземпляр объекта в файле пера и пытаться заменить его на свой объект, попробуйте подключиться к File's Owner изнутри вашего nib, а затем установите себя в качестве владельца:

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