Objective-Cが新しく、アプリケーションのようにSpringboardを作成しようとしています。だから私は別のUIViewControllerからサブビューの束を生成するループを作るUIScrollViewを得た。UIScrollViewでループを持つサブビューを追加するとメモリリークが発生する
ここに私のコードです:
@implementation ProjectsListViewController {
ProjectViewController *icon;
}
-
int row = 0;
int column = 0;
int page = 0;
for (int i = 0; i < 5; i++) {
icon = [[ProjectViewController alloc] init];
icon.iconPath = @"icon.png";
icon.iconTag = i;
int x = (1024 * page) + ((50 + (10 * column)) + (188 * column));
int y = (40 + (150 * row));
icon.view.frame = CGRectMake(x, y, icon.view.frame.size.width, icon.view.frame.size.height);
[self.scrollView addSubview:icon.view];
// Add a new page if we reach the end of one
if ((column == 4) && (row == 3)) {
row = 0;
column = 0;
page++;
// Add a new line if we reached last column
} else if (column == 4) {
column = 0;
row++;
// Add a column otherwise
} else {
column++;
}
}
このようなもののすべては、viewDidLoadメソッドになります。私がアプリを動かすまで、すべてがうまくいくまで、アイコンはそこにあります。 しかし、アイコンをクリックしたいとき(ボタンにIBActionを押して別のビューにプッシュする)、メモリリークの可能性があるため、アプリケーションがクラッシュする可能性があります。それはもはやサブビューへの参照がないようです。
私が見つけた解決策は、各ProjectViewControllerをNSMutableArray内に追加することだけです。この方法で、私はアイコンをクリックし、別のビューを押すことができます。
私が間違っていることを誰かに説明できますか?
申し訳ありません申し訳ありませんがあなたの耳にnoobの音、私は勉強しようとしている!
注:私はARCを使用しています。
IBActionはProjectViewControllerにリンクされていますか?もしそうなら、私はそれが問題だと思う。また、私が見つけたあなたの「唯一の解決策」は、今のところあなたの唯一のアイデアですか? –
スタックトレースを提供する必要があります。メモリリークはクラッシュの原因ではありません(通常) – Zepplock
各アイコンに 'addTarget'がありません。それはどこで設定しますか? –