Objective c 应用程序更新UIView花费的时间太长

Objective c 应用程序更新UIView花费的时间太长,objective-c,user-interface,asynchronous,Objective C,User Interface,Asynchronous,简言之,我有一个应用程序,用来显示手机本地存储的大量数据,即CoreData 我从CoreData中提取数据,然后向主UIView添加大约70个子视图。这会导致应用程序冻结(不响应),直到将所有子视图添加到主视图 我想找到一种方法来异步添加所有子视图,这样应用程序就不会冻结 我尝试使用performSelectorOnMainThread,但花费的时间相同 我能做什么 谢谢 [编辑] 每次按下按钮时,视图都必须更新自身,因此每次按下按钮时,它都会在数据库中搜索并更新视图,这意味着删除以前添加的所

简言之,我有一个应用程序,用来显示手机本地存储的大量数据,即CoreData

我从CoreData中提取数据,然后向主UIView添加大约70个子视图。这会导致应用程序冻结(不响应),直到将所有子视图添加到主视图

我想找到一种方法来异步添加所有子视图,这样应用程序就不会冻结

我尝试使用
performSelectorOnMainThread
,但花费的时间相同

我能做什么

谢谢

[编辑] 每次按下按钮时,视图都必须更新自身,因此每次按下按钮时,它都会在数据库中搜索并更新视图,这意味着删除以前添加的所有子视图,并向主视图添加大约70个子视图

下面是代码的一点外观:

currentEventsArray = I GET THE EVENTS FROM COREDATA
for(int i = 0; i < [currentEventsArray count]; i++){
    //I DO SEVERAL OPERATIONS WITH THE DATA AND THEN FINALLY...
    [self.view addsubview:aEventView];
 }
currentEventsArray=我从COREDATA获取事件
对于(int i=0;i<[CurrentEventsRay count];i++){
//我对数据做了几次操作,最后。。。
[self.view addsubview:aEventView];
}
CurrentEventsRay可以有50到80个事件
我可以独立添加子视图而不是等待它完成所有事件吗?我建议使用后台线程读取数据并创建视图,然后将视图添加到主线程上的主视图中。大概是这样的:

dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0),  ^{
    currentEventsArray = /*I GET THE EVENTS FROM COREDATA*/;
    NSMutableArray *newViews = [[NSMutableArray alloc] init];
    for(int i = 0; i < [currentEventsArray count]; i++){
        //I DO SEVERAL OPERATIONS WITH THE DATA AND THEN FINALLY...
        [newViews addObject: aEventView];
    }
    dispatch_async( dispatch_get_main_queue(), ^{
        // add or replace your subviews to the main view.
    }
});
并用它代替:

dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)

上面。

我认为您必须在viewWillApear上添加所有子视图,然后只设置值。不太可能,因为视图必须根据用户需求进行更新您是否考虑过在后台线程中构建子视图列表,然后使用主线程调用在主视图中添加/更改子视图?@gaige您能给我指一些参考以便我查看一下吗?另请看,我编辑了问题,这样更清楚了
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)