当用户单击“确定”按钮时,警报消息不会消失

时间:2015-12-12 06:41:54

标签: objective-c multithreading cocoa nsalert

我正在使用警报表来显示警报消息。我把警报表放在主线程中,我使用了更多这样的警报表但是在运行应用程序警报消息时出现。

但有时当用户在警告消息中单击“确定”按钮时。警报信息没有消失,我什么也做不了。我唯一能做的就是杀死应用程序并重新启动它。

我检查了日志文件以捕获问题。但是我无法从日志文件中获取问题,所有这些都是正常的,日志文件中没有崩溃。我检查了更多的参考,但我找不到问题出现的地方。这是示例代码。

var usersFromActiveDomains = [],
   baseUsers = [
      {
        name: "sam"
      },
      {
        name: "julie"
      },
      {
        name: "jimbolina"
      }
   ],
   getFrequency = function (u) {
      return u.name.length;
   },
   process = function (users) {
    _.forEach ( users , function ( user ) {
      console.log(user);
      var freq = getFrequency(user);
      if(freq) {
        user.frequency = freq;
        usersFromActiveDomains.push(user);
        console.log('user', user);
      } 
    });
    return usersFromActiveDomains;
  }
usersList2 = process(baseUsers);
console.log('baseUsers:',baseUsers);
console.log('usersFromActiveDomains:',usersFromActiveDomains);
console.log('usersList2:',usersList2);

问题是由线程引起的。这意味着两个方法同时被调用,或者问题出现在警报表中。

1 个答案:

答案 0 :(得分:0)

我认为您使用“get_main”块在Main主机上完成了所有工作,所以当你真的不需要对主Tread执行繁重的任务时,请使用dispatch_async(dispatch_get_main_queue)它会冻结你的UI和应用程序。