0

分析ビルドを使用してアプリを実行すると、Xcodeで多くのメモリリークが検出されました。特に、ここでどのように解決するかわからないことが1つあります。

- (UIView *) tableView:(UITableView *)tableView 
viewForHeaderInSection:(NSInteger)section {



UIImageView *sectionImage = [[UIImageView alloc] init];
if (section == 0)sectionImage.image = [UIImage imageNamed:@"myImage.png"];


return sectionImage;
}

だから私の質問は、どうすればこのsectionImageをリリースできますか?メソッドの戻りはありますか?

編集:

私は別の質問があります、分析して私に別のメモリリークを与えてください、私はこれを持っています:

.h @property(nonatomic、retain)NSIndexPath * directCellPath;

.m

@synthesize directCellPath = _directCellPath;

- (id)init{
if ((self = [super initWithNibName:@"MyViewController" bundle:nil])) {


    self.directCellPath = [[NSIndexPath alloc] init];

}
return self;
}

次に、コードでそれを使用し、最後にdeallocでこれを行います:

- (void)dealloc {

[_directCellPath release];

[super dealloc];
}

この行でメモリリークが発生します。

self.directCellPath = [[NSIndexPath alloc] init];

なぜdeallocで割り当てを解除したのですか?

4

3 に答える 3

1

このような自動リリースを使用する必要があります

UIImageView * sectionImage = [[[UIImageView alloc] init] autorelease];

于 2012-06-02T22:17:42.300 に答える
0

2番目の質問に答えるために、リリース_directCellPathしたのではなく、リリースしましたdirectCellPath。違いがあります。

于 2012-06-02T22:36:24.763 に答える
0

あなたはこれをしなければなりません

@synthesize directCellPath 

この

 - (void)dealloc 
{

self.directCellPath = nil;

[directCellPath release];
[super dealloc];

}
于 2012-06-02T22:50:05.467 に答える