0

画像ギャラリーとサムネイルギャラリーにたくさんの画像を読み込みます。ボタン(セクション)を押すたびに、画像を適切なセクションの画像に置き換えます。これを6〜7回実行すると、アプリがクラッシュします。だから私は割り当てツールでビルドしようとしました、そして私がボタンを押すたびに割り当てメモリが成長するのを見ます!私は、initWithContentOfFileを使用して、スタックメモリの割り当てが増えていないことを確認しました。私は何が間違っているのですか?

for (UIView *view in [scroller subviews]) {

    [view removeFromSuperview];


}
for (UIView *view in [thumbnail subviews]) {

    [view removeFromSuperview];


}


for (int i=1; i<numeroimg+1; i++) {
    UIImageView *imagen = [[[UIImageView alloc] initWithImage:[[UIImage alloc] initWithContentsOfFile:
                                                               [[NSBundle mainBundle]
                                                                pathForResource:[NSString stringWithFormat:@"%@%d",sezione,i]
                                                                ofType:@"jpg"]]]autorelease];
    imagen.frame = CGRectMake((i-1)*1024, 0, 1024, 704);

    [scroller addSubview:imagen];

    UIButton *button = [[[UIButton alloc] initWithFrame:CGRectMake((i-1)*210, 30, 200, 150)]autorelease];
    [button setImage:[[UIImage alloc] initWithContentsOfFile:
                      [[NSBundle mainBundle]
                       pathForResource:[NSString stringWithFormat:@"%@%d",sezione,i]
                       ofType:@"jpg"]] forState:UIControlStateNormal];
    [button addTarget:self action:@selector(pagina:) forControlEvents:UIControlEventTouchUpInside];
    button.tag = i;
    [thumbnail addSubview:button];
}
4

2 に答える 2

0

自動解放プールを手動で排出してみてください

@autoreleasepool{
UIImageView *imagen = [[[UIImageView alloc] initWithImage:[[UIImage alloc] initWithContentsOfFile:
                                                               [[NSBundle mainBundle]
                                                                pathForResource:[NSString stringWithFormat:@"%@%d",sezione,i]
                                                                ofType:@"jpg"]]]autorelease];
    imagen.frame = CGRectMake((i-1)*1024, 0, 1024, 704);

    [scroller addSubview:imagen];

    UIButton *button = [[[UIButton alloc] initWithFrame:CGRectMake((i-1)*210, 30, 200, 150)]autorelease];
    [button setImage:[[UIImage alloc] initWithContentsOfFile:
                      [[NSBundle mainBundle]
                       pathForResource:[NSString stringWithFormat:@"%@%d",sezione,i]
                       ofType:@"jpg"]] forState:UIControlStateNormal];
    [button addTarget:self action:@selector(pagina:) forControlEvents:UIControlEventTouchUpInside];
    button.tag = i;
    [thumbnail addSubview:button];
}
于 2012-05-07T16:27:09.793 に答える
0

私は何を間違っていますか?

+allocイメージの作成に使用しています:

UIImageView *imagen = [[[UIImageView alloc] initWithImage:...

しかし、あなたは決して解放しませんimagen

于 2012-05-04T14:05:37.837 に答える