2011-10-20 28 views
0

実行 - >実行 - パフォーマンスツールで - >アプリケーションでリークすると、リークが検出されますが、ツールでグリッチが発生しているかどうかわかりません。メモリリークが見つかりましたが見つかりませんでしたか?

  1. ボタンを選択するとアプリケーションが起動し、テーブルビュー(リークなし)が開きます。
  2. tableviewが表示され、何も触れていない(リークしていない)場合。
  3. 最初のセルを選択すると、カーソルが点滅します(3〜4秒後にリークします)?

他のセルを選択しようとすると、最初のレスポンダ(これは何とも関係ないかもしれません)になりません。

誰かがこれに出くわしたことがある場合、またはこれが起こっている可能性がある場所に私を案内したり指示したりすることができますか教えてください。ありがとうございました。

static NSString *CellIdentifier = @"Cell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
}  
     // Configure the cell... 
    UITextField *FirstField = [[UITextField alloc] initWithFrame:CGRectMake(10, 10, 130, 25)]; 
    FirstField.delegate = self; 
    FirstField.tag = indexPath.row; [cell.contentView addSubview:FirstField]; 
    FirstField.returnKeyType = UIReturnKeyNext; 
    [FirstField release]; 
    return cell; 
} 
+0

質問を編集してコードをインラインで投稿してください。答えへのコメントでそれを読むのは難しいです... – bryanmac

+1

私はそれがあなたの問題の答えだとは思いませんが、私はあなたがセルをデキューすると、もう一つのテキストフィールドを追加します。たくさんスクロールすると、cell.contentViewに多すぎるテキストフィールドを追加するだけでメモリが足りなくなる可能性があります。 おそらく、この関数では問題はありません。コントローラー内の他のものを 'alloc 'していますか? –

+0

パフォーマンスツールを使用して、発生している箇所を特定する方法はありますか? –

答えて

1

メモリリークは、関数を呼び出すたびにUITextFieldを割り当ててセルに追加するためです。

細胞が再利用され、セルがアクセスされるたびに、コンテンツ新規のUITextFieldが互いに

移動細胞がそのように割り当てられている場合にFirstFieldの割り当てに細胞に添加し、積層さを決定すること再利用することができます。

static NSString *CellIdentifier = @"Cell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    UITextField *FirstField = [[UITextField alloc] initWithFrame:CGRectMake(10, 10, 130, 25)]; 
    FirstField.tag = 1 
    [cell.contentView addSubview:FirstField]; 
    [FirstField release]; 
}  
UITextField *field = (UITextField *)[cell.contentView viewWithTag:1]; 
field.delegate = self; 
field.returnKeyType = UIReturnKeyNext; 
return cell; 

は、私はまた、あなたは、TextFieldサブビューを見つけるためにあなたがcell.contentViewのビューhirachyを検索する必要がありますその原因には、セルのindexPath.row値を格納するfield.tagを使用していることがわかります。

+0

こんにちは、私はあなたの修正を試みたが、[cell.contentView.viewWithTag:1];エラー(構造体や共用体ではないメンバーの 'content'に対する要求)を返します。 UITextField * field =(UITextField *)[cell.contentView viewWithTag:1]; –

+0

ご迷惑をおかけします。 – richerd

関連する問題