for(UIView *view in [_scrollView subviews]) {
NSMutableArray *_mutableArray = [_array mutableCopy];
[_mutableArray filterUsingPredicate:[NSPredicate predicateWithFormat:@"guid like %@",view.object.guid]];
if([_mutableArray count] != 0) {
//object is already on screen we need to update it
[view setObject:(Object*)[_mutableArray objectAtIndex:0]];
}
else {
//object not on screen add it
_mutableArray = [_array mutableCopy];
[_mutableArray filterUsingPredicate:[NSPredicate predicateWithFormat:@"guid not like %@",view.object.guid]];
UIView *newView = [[UIView alloc] initWithObject:(Object*)[_mutableArray objectAtIndex:0]];
[_scrollView addSubview:newView];
}
}
正如您所看到的,此方法更新屏幕上的對象,並且如果某個對象不在屏幕上,它將被創建並添加到scrollView子視圖層次結構中。 現在我擔心的是,我正在修改scrollView子視圖層次結構,同時枚舉它。這會最終崩潰我的應用程序嗎?這段代碼是否會隨機崩潰我的應用程序?
如果是,我如何修改上面的代碼以保證安全並實現相同的功能?
謝謝!
你使用ARC嗎?似乎你有一個與內存管理有關的問題 – NeverBe 2012-02-09 22:12:38
我正在使用ARC。代碼沒有崩潰,但我不確定它不會在將來。這種添加子視圖到scrollView(枚舉它)的方式是一種有效的方式嗎? – 2012-02-09 22:32:10
你在_array存儲什麼? – NeverBe 2012-02-09 22:37:31