1

次のコードを使用しており、ARCを使用しています

NSString *text;
static NSString *CellIdentifier=@"Cell";
FeedsCell *cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
    cell = [[FeedsCell alloc] initWithStyle:UITableViewCellStyleSubtitle  reuseIdentifier:CellIdentifier];
}

if (indexPath.row == [feedsData count]-1)
{
    [spinner startAnimating];
    [spinner setHidesWhenStopped:YES];

    OnDemand_fetch *getData = [[OnDemand_fetch alloc] init];

    if(nextUrl != NULL)
    {

        NSString *nextfbUrl = [getData getnextFbfeedUrl];
        NSString *nexturlEdited = [nextfbUrl stringByReplacingOccurrencesOfString:@"|" withString:@"%7C"];
        [demandfetch getFeedsInBackground:nexturlEdited];



    }
    else
    {
        [spinner stopAnimating];
        self.myTableView.tableFooterView=nil;
     }   

分析中に、「267 行目に割り当てられ、'getData' に格納されたオブジェクトの潜在的なリーク」という警告が表示されます。

誰でもこれを回避する方法を提案できますか? これは何か問題を引き起こしますか?

ありがとう

4

2 に答える 2

5

エラーなし!しかし、ARCを使用しています!なぜこの種の奇妙な行動?

なぜなら...あなたはARCを使用していないからです。なぜ自分がそうだと思ったのかわからない。ARCに変換するには、[編集]->[リファクタリング]->[Objective-CARCに変換]に移動します。

Objective-CARCに変換する方法

すべてを実行したくない場合、およびすべてをARCにする場合-fobjc-arcは、プロジェクトを非ARCにして、ARCを使用するファイルにコンパイラフラグとして追加できます。

于 2012-11-05T11:22:25.957 に答える
0

getDataブロック内のオブジェクトのみを使用しているので、次のように、オブジェクトをif(nextUrl != NULL)ブロックに移動しnilて最後に作成することができます。

if(nextUrl != NULL)
{
    OnDemand_fetch *getData = [[OnDemand_fetch alloc] init];
    NSString *nextfbUrl = [getData getnextFbfeedUrl];
    NSString *nexturlEdited = [nextfbUrl stringByReplacingOccurrencesOfString:@"|" withString:@"%7C"];
    [demandfetch getFeedsInBackground:nexturlEdited];
    getData = nil;
}
于 2012-11-05T11:10:05.150 に答える