草庐IT

iphone - Reg : modifying layer that is being finalized. ...... [CALayer frame]: 发送到释放实例 0xe43c520 的消息

coder 2023-07-27 原文

我遇到了一个非常奇怪的问题。我希望你们中的许多人能为我提供解决这个问题的意见。 我的应用程序经常中断,但我无法获得确切的场景。

在日志中我得到关注

2011-02-10 16:22:12.914 RCA-iOS[4132:8327] modifying layer that is being finalized - 0xe43c520
2011-02-10 16:22:13.253 RCA-iOS[4132:207] modifying layer that is being finalized - 0xe43c520
2011-02-10 16:22:13.270 RCA-iOS[4132:207] modifying layer that is being finalized - 0xe43c520
2011-02-10 16:22:13.270 RCA-iOS[4132:207] modifying layer that is being finalized - 0xe43c520
2011-02-10 16:22:13.272 RCA-iOS[4132:207] *** -[CALayer frame]: message sent to deallocated instance 0xe43c520

以下是我的堆栈跟踪。它在主线程中中断

#0  0x01978057 in ___forwarding___
#1  0x01a07b42 in __forwarding_prep_1___
#2  0x003c196a in -[UIView(Geometry) frame]
#3  0x003f5ff4 in -[UINavigationBar _getTitleViewFrame:leftViewFrame:rightViewFrame:forViews:forItemAtIndex:]
#4  0x003e5cab in -[UINavigationBar _getTitleViewFrame:leftViewFrame:rightViewFrame:forViews:]
#5  0x003f0c06 in __-[UINavigationBar layoutSubviews]_block_invoke_1
#6  0x003bdb5c in +[UIView(Animation) _performWithoutAnimation:]
#7  0x003f76bb in -[UINavigationBar layoutSubviews]
#8  0x00f59451 in -[CALayer layoutSublayers]
#9  0x00f5917c in CALayerLayoutIfNeeded
#10 0x00f5237c in CA::Context::commit_transaction
#11 0x00f520d0 in CA::Transaction::commit
#12 0x00f827d5 in CA::Transaction::observer_callback
#13 0x019e7fbb in __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__
#14 0x0197d0e7 in __CFRunLoopDoObservers
#15 0x01945bd7 in __CFRunLoopRun
#16 0x01945240 in CFRunLoopRunSpecific
#17 0x01945161 in CFRunLoopRunInMode
#18 0x02129268 in GSEventRunModal
#19 0x0212932d in GSEventRun
#20 0x0039e42e in UIApplicationMain
#21 0x00001fd0 in main at main.m:14

以下是 NSZombie 对象的 Instrument 输出。这指向 UIKit

#   Category    Event Type  RefCt   Timestamp   Address Size    Responsible Library Responsible Caller
0   CALayer Malloc  1   25304068864 0x10837840  48  UIKit   -[UIView _createLayerWithFrame:]
1   CALayer Zombie  -1  99780847872 0x10837840  0   UIKit   -[UIView(Geometry) frame]

没有指向代码的地方。有没有人遇到过这种问题?如果是,请在下面告诉我
1) 当我们遇到“修改正在完成的层”中断问题时?
2) 是因为 UIView 层吗?例如 (view.layer.cornerRadius) ?
3) Stack Trace 指向 UINAvigationBar,有什么方法可以覆盖方法并尝试一些东西吗?

任何帮助表示赞赏。谢谢

最佳答案

错误 “修改正在完成的层” 当您尝试修改正在释放的 CALayer 的属性时发生。当我在该层的 -dealloc 方法中不小心使用访问器清除 CALayer 上的属性时,我已经看到了这种情况。

这也可能发生在 UIView 的 -dealloc 方法中,如果任何与显示相关的内容被更新(因此触及底层 CALayer)。

在您的情况下,由于僵尸消息,您似乎在某处过度释放了 UIView。 “正在完成的修改层” 只是它的一个副作用,因为在某些时候你会在 UIView 被释放之前更新它。

打开断点,确保您已在抛出异常时设置断点,并在调试器中运行您的应用程序。它应该在将消息发送到过度释放的 UIView 的那一行停止,它应该告诉您哪个 View 位于其中心。然后您可以回溯以找到您在什么时候发送了过多的发布消息(或者如果您需要它超出当前范围则自动发布而不保留)。

因为您已经有指向 UINavigationBar 的证据,请检查它及其关联的 View 以确保您正确地保留了它。

关于iphone - Reg : modifying layer that is being finalized. ...... [CALayer frame]: 发送到释放实例 0xe43c520 的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4956413/

有关iphone - Reg : modifying layer that is being finalized. ...... [CALayer frame]: 发送到释放实例 0xe43c520 的消息的更多相关文章

  1. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

    如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

  2. ruby - 未定义的方法 auto_upgrade!将 Sinatra/DataMapper 应用程序推送到 Heroku 时 - 2

    有谁知道在Heroku的Bamboo堆栈上启动并运行使用DataMapper的Sinatra应用程序所需的魔法咒语?Bamboo堆栈不包含任何预安装的系统gem,无论我尝试使用何种gem组合,我都会不断收到此错误:undefinedmethod`auto_upgrade!'forDataMapper:Module(NoMethodError)这是我的.gems文件中的内容:sinatrapgdatamapperdo_postgresdm-postgres-adapter这些是我将应用程序推送到Heroku时安装的依赖项:----->Herokureceivingpush----->Si

  3. ruby-on-rails - Ruby on Rails - 需要在每周的特定时间将消息发送到电子邮件 - 2

    我想知道我应该如何着手这个项目。我需要每周向人们发送一次电子邮件。但是,这必须在每周的特定时间自动生成并发送。编码有多难?我需要知道是否有任何书籍可以提供帮助,或者你们中的任何人是否可以指导我。它必须使用ruby​​onrails进行编程。因此有一个网络服务和数据库集成。干杯 最佳答案 为什么这么复杂?您只需安排工作。您可以使用Delayed::Job例如。Delayed::Job让您可以使用run_at符号在特定时间安排作业,如下所示:Delayed::Job.enqueue(SendEmailJob.new(...),:run_

  4. ruby-on-rails - 在 Rails/Capybara/Poltergeist 规范中使用 url_for 将驱动程序发送到 example.com 而不是应用程序 - 2

    如果我在功能规范中调用url_for,它会返回一个以http://www.example.com/开头的绝对URL.Capybara会很乐意尝试加载该站点上的页面,但这与我的应用程序无关。以下是重现该问题的最少步骤:从这个Gemfile开始:source'https://rubygems.org'gem"sqlite3"gem"jquery-rails"gem"draper"gem"rails",'4.1.0'gem"therubyracer"gem"uglifier"gem"rspec-rails"gem"capybara"gem"poltergeist"gem"launchy"运行

  5. ruby - 如何使用 webhooks 从 Gitlab 推送到 Github - 2

    如果我只能找到正确的手册,我的Google-fu就会让我失望,因为这看起来很明显。我有一个由我们的托管服务提供商安装的Gitlab服务器Gitlab服务器有很多项目。对于其中一些项目,我希望Gitlab每次从本地客户端推送到Gitlab时自动推送到远程存储库(在本例中为Github)。像这样:客户端-->gitlab-->github任何标签和分支也应该被推送。AFAICT我有3个选择:用两个Remote配置本地客户端,同时推送到Gitlab和Github。我想避免这种情况,因为开发人员。在Gitlab服务器上的存储库中添加一个gitpost-receiveHook。这将是最灵活的(我

  6. ruby-on-rails - 将 Rails/ClearDB App 推送到 Heroku 错误 'Can' t 连接到 '127.0.0.1' 上的 MySQL 服务器 - 2

    每次我跑:gitpushherokumaster我收到以下错误:Running:rakeassets:precompilerakeaborted!Can'tconnecttoMySQLserveron'127.0.0.1'我在运行rails-vRails3.2.11和ruby-vruby1.9.3p194(2012-04-20revision35410)[x86_64-darwin12.2.0]我已经通过HerokuCLI安装了ClearDB,它似乎工作正常,但我无法找出这个错误。这是我用于生产的yml:production:adapter:mysql2encoding:utf8hos

  7. iphone - 扩展 restful_authentication/AuthLogic 以支持匿名 iPhone 的延迟登录的最佳方法是什么? - 2

    我正在构建一个与RubyonRails后端对话的iPhone应用程序。RubyonRails应用程序还将为Web用户提供服务。restful_authentication插件是提供快速和可定制的用户身份验证的绝佳方式。但是,我希望iPhone应用程序的用户在新列中存储一个由手机的唯一标识符([[UIDevicedevice]uniqueIdentifier])自动创建的帐户。稍后,当用户准备好创建用户名/密码时,帐户将更新为包含用户名和密码,iPhone唯一标识符保持不变。用户在设置用户名/密码之前不能访问该网站。然而,他们可以使用iPhone应用程序,因为该应用程序可以使用它的标识符

  8. ruby - 如何使用 Ruby 将键盘和鼠标命令发送到底层操作系统? - 2

    是否有操作系统中立的方式让Ruby将键盘和鼠标事件发送到底层操作系统?(对我而言)一个明显的方法是使用Ruby/Java绑定(bind)并使用java.awt.Robot,但这看起来很愚蠢。 最佳答案 对于Mac:geminstallrb-appscript然后你可以用这样的脚本来测试它:require"rubygems"require"appscript"includeAppscriptapp("TextEdit").activateapp("SystemEvents").keystroke("LookMa,keystrokes!

  9. ruby - 使用 Selenium 和 Ruby 将键盘快捷键发送到 chrome - 2

    我正在尝试使用键盘快捷键在Linux上的chrome浏览器中启动开发工具。因为我使用的是Ruby并且它没有和弦方法,所以我尝试了以下方法:driver.action.key_down(:shift).key_down(:control).send_keys("i").key_up(:shift).key_up(:control).perform以上代码将在Firefox中运行(如Keypressin(Ctrl+A)SeleniumWebDriver中所建议),但在chrome中,它返回nil但没有结果。有什么建议吗? 最佳答案 在我

  10. ruby-on-rails - Ruby 2.0/Rails 4.0.0beta 升级在推送到 heroku 时失败 - 2

    脑子转储,因为我的脑袋被谷歌搜索和猛撞电脑弄得焦头烂额。任何帮助或线索将不胜感激!我通过rvm管理我的gem。$ruby-vruby2.0.0p0(2013-02-24revision39474)[x86_64-darwin12.2.0]$rails-vRails4.0.0.beta1然后当我想从头开始创建一个全新的应用程序$railsnewbrand_new_appcreatecreateREADME.rdoc...Yourbundleiscomplete!Use`bundleshow[gemname]`toseewhereabundledgemisinstalled.$cdbran

随机推荐