jjzjj

xcode - CoreAnimation 未提交 CATranaction NSComboBox

coder 2023-09-11 原文

我正在用下面函数中的一些数据填充 NSComboBox。在它被填充后,我尝试滚动浏览我收到 CATransaction 警告的项目。任何人都可以阐明为什么会发生这种情况以及我可以做些什么来解决它吗?我发现这可能与在主线程以外的线程上更改组合框的 UI 有关,但之后我就卡住了。

func getAllRecords()
{
    CATransaction.begin()
    let url = NSURL(string: "http://URL.php")
    let task = NSURLSession.sharedSession().dataTaskWithURL(url!)
        {
            (data, response, error) in
            var d = NSString(data: data, encoding: NSUTF8StringEncoding)
            var arr = d!.componentsSeparatedByString("<") // spliting the incoming string from "<" operator because before that operator is our required data and storing in array
            var dataWeNeed:NSString = arr[0] as! NSString // arr[0] is the data before "<" operator and arr[1] is actually no use for us
            if let data = NSJSONSerialization.JSONObjectWithData(dataWeNeed.dataUsingEncoding(NSUTF8StringEncoding)!, options: NSJSONReadingOptions.MutableContainers, error: nil) as? NSArray
                {
                    for dd in data
                        {
                            var name : String = dd["Name"]! as! String
                            var email : String = dd["Email"]! as! String
                            //println("Name: \(name)")
                            //println("Email: \(email)")
                            self.userComboBox.addItemsWithObjectValues([name])
                        }
                }
        }
    task.resume()
    CATransaction.commit()
}

这是我从调试区域收到的警告。

2015-06-14 13:54:04.756 Green Time Clock[2150:738395] Unexpected        outstanding background CATransaction
CoreAnimation: warning, encountered thread with uncommitted     CATransaction; created by:
0   QuartzCore                          0x00007fff9ab4d6c2     _ZN2CA11Transaction4pushEv + 312
1   QuartzCore                          0x00007fff9ab689a8   _ZN2CA11Transaction15ensure_implicitEv + 276
2   QuartzCore                          0x00007fff9ab4d842 _ZN2CA11Transaction9set_valueEj12_CAValueTypePKv + 40
3   QuartzCore                          0x00007fff9ab4f452 +[CATransaction setDisableActions:] + 38
4   AppKit                              0x00007fff921a1b8c -[NSView(NSInternal) _updateLayerGeometryFromView] + 389
5   AppKit                              0x00007fff921c7d09 -[NSView setFrameSize:] + 1129
6   AppKit                              0x00007fff921c789a -[NSControl setFrameSize:] + 77
7   AppKit                              0x00007fff922e3891 -[NSTableView setFrameSize:] + 256
8   AppKit                              0x00007fff922e35f9 -[NSTableView _tileAndRedisplayAll] + 180
9   Green Time Clock                    0x00000001000042d6 _TFFC16Green_Time_Clock14ViewController13getAllRecordsFS0_FT_T_U_FTGSQCSo6NSData_GSQCSo13NSURLResponse_GSQCSo7NSError__T_ + 2886
10  Green Time Clock                    0x0000000100004463 _TTRXFo_oGSQCSo6NSData_oGSQCSo13NSURLResponse_oGSQCSo7NSError__dT__XFo_iTGSQS__GSQS0__GSQS1____iT__ + 51
11  Green Time Clock                    0x0000000100001e31 _TPA__TTRXFo_oGSQCSo6NSData_oGSQCSo13NSURLResponse_oGSQCSo7NSError__dT__XFo_iTGSQS__GSQS0__GSQS1____iT__ + 81
12  Green Time Clock                    0x0000000100004493 _TTRXFo_iTGSQCSo6NSData_GSQCSo13NSURLResponse_GSQCSo7NSError___iT__XFo_oGSQS__oGSQS0__oGSQS1___dT__ + 35
13  Green Time Clock                    0x00000001000044fa _TTRXFo_oGSQCSo6NSData_oGSQCSo13NSURLResponse_oGSQCSo7NSError__dT__XFdCb_dGSQS__dGSQS0__dGSQS1___dT__ + 90
14  CFNetwork                           0x00007fff8c09cba2 __49-[__NSCFLocalSessionTask _task_onqueue_didFinish]_block_invoke + 157
15  Foundation                          0x00007fff9a75f7e8 __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 7

最佳答案

不确定根本问题是什么,我在将字符串值更新为 NSTextView 对象时发现了警告,并使用以下代码解决了它。

只需确保更新过程在主线程中处理即可。

//链接:NSTextStorage limitation on size and frequency of updates

dispatch_block_t block = ^ {
    NSAttributedString *attributeString = [[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@\n", strLog]];

    NSTextStorage* store = [_textViewOutputLog textStorage];
    [store beginEditing];
    [store appendAttributedString:attributeString];
    [store endEditing];
    [_textViewOutputLog scrollRangeToVisible:NSMakeRange([[_textViewOutputLog string] length], 0)];
};

if ([NSThread isMainThread]) {
    block();
} else {
    dispatch_async(dispatch_get_main_queue(), block);
}

关于xcode - CoreAnimation 未提交 CATranaction NSComboBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30833324/

有关xcode - CoreAnimation 未提交 CATranaction NSComboBox的更多相关文章

  1. ruby - 如何在 Lion 上安装 Xcode 4.6,需要用 RVM 升级 ruby - 2

    我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121

  2. git使用常见问题(提交代码,合并冲突) - 2

    文章目录git常用命令(简介,详细参数往下看)Git提交代码步骤gitpullgitstatusgitaddgitcommitgitpushgit代码冲突合并问题方法一:放弃本地代码方法二:合并代码常用命令以及详细参数gitadd将文件添加到仓库:gitdiff比较文件异同gitlog查看历史记录gitreset代码回滚版本库相关操作远程仓库相关操作分支相关操作创建分支查看分支:gitbranch合并分支:gitmerge删除分支:gitbranch-ddev查看分支合并图:gitlog–graph–pretty=oneline–abbrev-commit撤消某次提交git用户名密码相关配置g

  3. ruby-on-rails - 如何在 Rails 中添加禁用的提交按钮 - 2

    我在ruby​​表单中有一个提交按钮f.submitbtn_text,class:"btnbtn-onemgt12mgb12",id:"btn_id"我想在不使用任何javascript的情况下通过ruby​​禁用此按钮 最佳答案 添加disabled:true选项。f.submitbtn_text,class:"btnbtn-onemgt12mgb12",id:"btn_id",disabled:true 关于ruby-on-rails-如何在Rails中添加禁用的提交按钮,我们在St

  4. ruby-on-rails - 在 rails 中提交后回滚事务 - 2

    保存成功后可以回滚吗?让我有一个带有属性名称、电子邮件等的用户模型。例如u=User.newu.name="test_name"u.email="test@email.com"u.save现在记录将成功保存在数据库中,之后我想回滚我的事务(不是销毁或删除)。有什么想法吗? 最佳答案 您可以通过交易来做到这一点,请参阅http://markdaggett.com/blog/2011/12/01/transactions-in-rails/例子:User.transactiondoUser.create(:username=>'Nemu

  5. ruby-on-rails - 如何使用 Xcode 4.5.1 在 OSX Lion 10.8.2 上编译 EventMachine gem - 2

    我找遍了所有我能找到的地方,但似乎找不到解决这个问题的办法。我在Lion10.8.2上使用Xcode4.5.1,并尝试为Rails项目运行bundle,但它一直卡在这上面。我正在为Heroku使用Thingem。Bolanos@Jeremys-Mac-mini⦿-1.9.3fishfarm$sudogeminstalleventmachinePassword:Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingeventmachine:ERROR:Failedtobuildgemnativeextens

  6. ruby - 如何以编程方式使用 Rugged 创建提交? - 2

    我正在尝试使用Rugged以编程方式创建对现有存储库的提交(libgit2的Ruby绑定(bind))。我已尝试遵循RuggedREADME中提供的文档,但我认为它与代码库的当前状态不太匹配。当我尝试运行以下代码时,我不断收到错误消息:require'rugged'#Createaninstanceoftheexistingrepositoryrepo=Rugged::Repository.new('/full/path/to/repo')#grabthecurrentTimeobjectfornowcurr_time=Time.now#writeanewblobtothereposi

  7. ruby - git:从 bitbucket 导出并导入 github(带提交) - 2

    我在bitbucket上创建了一个私有(private)git存储库并提交了代码。现在我想导出所有(提交、代码、历史记录)并将其导入github上的gitrepo。有没有办法做到这一点?谢谢 最佳答案 在本地检查所有内容到您的计算机和gitpull。创建一个github存储库将此存储库添加为您的第二个远程(“使用gitremote添加githubURL”)推送到第二个Remote 关于ruby-git:从bitbucket导出并导入github(带提交),我们在StackOverflow

  8. ruby-on-rails - 常量化通过浏览器提交的参数是不好的做法吗? - 2

    我有一个单表继承设置,我有一个Controller(我觉得有多个Controller会重复)。但是,对于某些方法,我想调用模型的子类。我想我可以让浏览器发送一个参数,我会针对该参数编写一个case语句。像这样的东西:case@model[:type]when"A"@results=Subclass1.search(params[:term])when"B"@results=Subclass2.search(params[:term])...end或者,我了解到Ruby的所有技巧都可以用字符串创建模型。像这样的东西:@results=params[:model].constantize.

  9. ruby - 从用户提交的文本中提取关键字的好方法是什么? - 2

    我正在构建一个网站,该网站允许用户通过以图形方式表示支持和反对特定问题的论点来理解辩论。(Wrangl)我想对这些辩论进行分类,以便更容易找到它们并将它们联系起来。我不想让发起辩论的人在他们看到任何好处之前添加标签和类别,从而激怒他们,所以我正在寻找一种自动提取关键字的方法。有什么好的方法可以利用辩论的标题和描述(以及可能的论点本身的内容,一旦有的话)来提取,比如说,可以用作元数据将类似辩论联系在一起的十个强关键字,或者即使是在可以查看辩论的HTML页面头部的“元”关键字标记的内容。例如。DatamappervsActiveRecord该网站使用Ruby和Sinatra编码,使用Dat

  10. ruby-on-rails - Rails,如何提交带有文本链接的表单? - 2

    我正在尝试让此表单正确提交。这是我到目前为止所拥有的:update_user_setting_path,:remote=>true,:html=>{:method=>:post,:class=>"search_formgeneral_form"})do|f|%>按钮用这段代码呈现:SAVE"),:action=>'create'%>我正在使用actioncreate,这是否正确?这是呈现的表单标签:我错过了什么?感谢您的帮助! 最佳答案 不,您没有正确使用link_to。您需要使用submit标签来提交您的表单,而不是link_to

随机推荐