Objective-C를 처음 사용하고 응용 프로그램과 같은 스프링 보드를 만들려고합니다. 그래서 나는 다른 UIViewController에서 여러개의 서브 뷰를 생성하는 루프를 만드는 UIScrollView를 얻었습니다.UIScrollView에서 루프가있는 하위 뷰를 추가하면 메모리 누수가 발생합니다.
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 방법에 간다 -
가@implementation ProjectsListViewController {
ProjectViewController *icon;
}
:
여기 내 코드입니다. 앱을 실행하면 모든 것이 정상적으로 작동 할 때까지 아이콘이 있습니다. 그러나 가능한 한 메모리 누수 때문에 아이콘을 클릭하고 싶습니다 (다른보기로 밀어 넣으려면 버튼에 IBAction이 있습니다). 내 앱이 충돌합니다. 그것은 더 이상 subviews에 대한 참조가없는 것 같습니다.
유일한 해결책은 각 ProjectViewController를 NSMutableArray 안에 추가하는 것입니다. 이렇게하면 아이콘을 클릭하고 다른보기를 누를 수 있습니다.
누군가 내가 잘못하고있는 것을 설명 할 수 있습니까?
죄송합니다. 귀에 멍청한 소리가 들리면 배우려고합니다.
참고 : 저는 ARC를 사용하고 있습니다.
IBAction이 ProjectViewController에 연결되어 있습니까? 그렇다면 그 것이 문제라고 생각합니다. 또한 "내가 찾은 유일한 해결책"이 효과가 있습니까? 아니면 지금까지의 유일한 아이디어입니까? –
스택 추적을 제공해야합니다. 메모리 누수가 크래시의 소스가 아닙니다 (일반적으로) – Zepplock
각 아이콘에 대해'addTarget'가 없습니다. 어디에서 설정 했습니까? –