我有一个独特的案例,我需要在sqlite数据库中填充包含数千个项目的菜单...
我目前正在使用以下代码填充它,但它在填充时会阻塞主线程,并且在填充~3000项时需要花费一分钟来加载(第一次)。是否有一种有效的方法可以在不阻塞ui的情况下以较小的块延迟加载菜单?
rules.h
function perm(a){
var r = [[a[0]]],
t = [],
s = [];
if (a.length <= 1) return a;
for (var i = 1, la = a.length; i < la; i++){
for (var j = 0, lr = r.length; j < lr; j++){
r[j].push(a[i]);
t.push(r[j]);
for(var k = 1, lrj = r[j].length; k < lrj; k++){
for (var l = 0; l < lrj; l++) s[l] = r[j][(k+l)%lrj];
t[t.length] = s;
s = [];
}
}
r = t;
t = [];
}
return r;
}
var arr = [0,1,2,4,5];
console.log("The length of the permutation is:",perm(arr).length);
console.time("Permutation test");
for (var z = 0; z < 2000; z++) perm(arr);
console.timeEnd("Permutation test");
rules.m
{
IBOutlet NSPopUpButton *rulesSelectionButton;
}
@property (retain) IBOutlet NSPopUpButton *rulesSelectionButton;
以及填充按钮的代码:
@synthesize rulesSelectionButton;
答案 0 :(得分:0)
NSComboBox非常适合大量项目,实际上比NSPopupBotton更容易设置......虽然看起来并不好看。