用数千个项填充NSPopupButton

时间:2016-12-09 20:53:40

标签: objective-c nspopupbutton

我有一个独特的案例,我需要在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;

1 个答案:

答案 0 :(得分:0)

NSComboBox非常适合大量项目,实际上比NSPopupBotton更容易设置......虽然看起来并不好看。