簡體   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