使用UIActionSheet 的時候發(fā)現(xiàn)點擊button非常緩慢阱州。原因是在回調函數里一直執(zhí)行的是主線程憎亚,需要將執(zhí)行時間較長的函數放到分支線程上去。調用dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{});解決了卡頓的問題。
但是在分支線程上使用了for循環(huán)遍歷一個NSMutableSet的editSet屬性。會發(fā)生閃退尽棕,原因是做的淺拷貝,分支線程還沒執(zhí)行完時彬伦,主線程其它地方調用了removeAllObject導致editSet元素全部被移除滔悉。分支線程去取editSet里面的內容時為空。解決方法是必須做深拷貝单绑。
NSMutableSet *set = [[NSMutableSet alloc] initWithSet:self.editSet] ;
for (NSIndexPath *index? in set) {//write your code here};