【问题标题】:UITextField causes crash in iOS 5, works fine in iOS 4UITextField 在 iOS 5 中导致崩溃,在 iOS 4 中运行良好
【发布时间】:2012-02-07 00:40:15
【问题描述】:

我有一个非常奇怪的问题,如果我单击 UITextField,我的应用程序中的任何 UITextField 都会因此错误而崩溃:

0_CreateCachePathEmbedded(__CFString const*, unsigned char)

0x0246ac4f mov (%esi),%esi

线程 5 WebThread:程序接收到的信号:“EXC_BAD_ACCESS”

我尝试在未链接到任何内容的界面构建器中添加 UITextField,但仍然遇到同样的崩溃。在 iOS4.3 模拟器中一切正常。

到底发生了什么?

【问题讨论】:

  • 抱歉,我没有意识到它会缩小这么多。我不确定如何从 xcode 获取完整的故障转储,但它说:0_CreateCachePathEmbedded(__CFString const*, unsigned char)在左侧和右侧显示“线程 5 WebThread:程序接收到的信号:“EXC_BAD_ACCESS”
  • 我在 iOS 5 中遇到了很多问题,但到目前为止,这些问题主要是由于布局工作方式的一些(未记录和未描述的)更改造成的。基本的 UITextFields(虽然没有大量使用)已经奏效。您可能想考虑一下,也许某种布局混乱是您问题的根源。
  • 顺便说一句,引用汇编程序几乎没用。控制台中可能出现的任何错误消息都会很有帮助。
  • 控制台没有显示任何错误 =(
  • 也可能是代码中其他地方的僵尸对象(对象释放过于频繁);我曾经遇到过这种类型的错误,在 iOS 4.3 上,僵尸对象只会被静默接受(可能稍后会造成崩溃),而在 iOS 5.0 上会立即崩溃(尽管在某些代码中不直接相关)。尝试使用带有 Zombie 仪器的仪器,并尝试在那里重现崩溃。

标签: iphone objective-c ios


【解决方案1】:

这也发生在我身上,更改产品名称修复了它。我的产品名称中有一个 ∂ 字符,用于我的应用程序的调试/开发版本,它似乎在 iOS 4.3 上运行良好,但在 iOS 5 上运行良好。要弄清楚点击随机 UITextField 是不可能的相关性(不是全部引起例如,如果我更改 UITextField 以确保它不会崩溃)将导致崩溃,因为产品名称包含非标准字符。

我希望这可以帮助其他遇到此问题的人,因为我花了几天时间尝试调试它。

【讨论】:

    【解决方案2】:

    仍然不确定问题出在哪里,但我可以通过将所有代码复制到一个新项目来解决它。

    【讨论】:

    • 我认为你没有“解决”这个问题。如果我是您,我会将 NSZombieEnabled 添加到您当前的 RunScheme(产品-> 编辑方案 .. 选择运行方案)。在“环境变量”下添加值为 YES 的 NSZombieEnabled。
    • 老实说,我不认为这是我的代码中的内存问题。一定是某些项目设置与 iOS 5 不兼容,因为在新项目中我没有任何问题。我的意思是,除了在界面构建器中添加的单个 UITextField 并且没有连接到任何东西之外,一个完全空的视图控制器怎么会有内存问题..
    • 不过,我的小费还是不错的。它会让你调试 NSZombies(释放的对象)。
    【解决方案3】:

    在我的例子中,是目标设置中的产品名称导致了这个奇怪的错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-28
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      • 1970-01-01
      • 2012-10-10
      • 1970-01-01
      • 2012-06-03
      相关资源
      最近更新 更多