exc_bad_access仅限iOS版本< 9 - 取消分配文本字段(

时间:2016-03-21 10:00:56

标签: ios swift uitableview exc-bad-access

我的应用程序不适用于早于iOS 9.x的版本

APP在textField上抛出EXC_BAD_ACCESS异常。 textField位于tableView中。 我启用了Zombie Objects:" [_ UILabelLayer opacity]:消息发送到解除分配的实例0x81018770"

它不会出现在开头。它只会在我单击tableView单元格或我的30秒计时器刷新UI时崩溃。 (我禁用了计时器,但没有变化)

我尝试了dispatch_async(dispatch_get_main_queue())和信号量。我没有任何积极的影响。

我检查对象是否为零,但它不是

if self.textField != nil {
                if let textFieldNotNil = self.textField {

                    // textField.removeFromSuperview()  
                    print("The Textfield \(textFieldNotNil.text)")
                    print("The Textfield \(textFieldNotNil)")

                 dispatch_async(dispatch_get_main_queue()) {
                    textFieldNotNil.text = strValue
                    }
                }
            }

当我使用textField.removeFromSuperview()时,应用程序再次运行,但文本字段内没有任何值。 (很明显,我从superview -.-中删除了它)

我可以查看我的文本字段是否已分配?我找不到任何东西。 有人有其他想法吗?

修改

  

我认为将消息发送到零不会导致您的应用崩溃。

我也是这样想的。我的文本域也不是。但它崩溃了,这是奇怪的事情。

  

你有StackTrace吗?

如果你的意思是使用StackTrace,请执行{try ...} catch {} -construct。不,我没有。我搜索了一个例子来包围textfield.text =" .."用do / try / catch,但我无法找到。

  

什么时候崩溃?当您访问textFieldNotNil.text?   这是奇怪的事情。它在行中崩溃:textFieldNotNil.text = strValue

错误是textFieldNotNil已取消分配。当用户单击tableViewCell或每30秒时调用textFieldNotNil。

  

使用[textFieldNotNil setText:strValue]替换textFieldNotNil.text = strValue时会发生此崩溃吗?

是客观C吗?编译器正在讨厌"预期","分离器

  

您也可以尝试使用textFieldNotNil.stringValue = strValue   我不能。我的textFieldNotNil没有像stringValue这样的属性。那是什么?

     

self.textField声明为弱吗?

是的,确实如此。 @IBOutlet weak var textField:UITextField?

  

调用dispatch_async时是否在后台线程上?   我不知道......我不太了解堆栈跟踪输出。

* thread #1: tid = 0x38475f, 0x058f8e86 libsystem_kernel.dylib`__kill + 10, queue = 'com.apple.main-thread', stop reason = signal SIGKILL
frame #0: 0x058f8e86 libsystem_kernel.dylib`__kill + 10
frame #1: 0x058f5db9 libsystem_kernel.dylib`kill$UNIX2003 + 32
frame #2: 0x01f4829d CoreFoundation`___forwarding___ + 1069
frame #3: 0x01f47e4e CoreFoundation`__forwarding_prep_0___ + 14
frame #4: 0x034904e8 UIKit`-[UIView(Rendering) alpha] + 42
frame #5: 0x1287e70a UIKit`-[UILabelAccessibility isAccessibilityElement] + 90
frame #6: 0x12aba330 MessageUIFramework`-[MessageUILabelAccessibility isAccessibilityElement] + 104
frame #7: 0x128942c9 UIKit`-[UITextFieldAccessibility _accessibilityCountAccessibleChildren:] + 211
frame #8: 0x1289449c UIKit`__42-[UITextFieldAccessibility _updateButtons]_block_invoke + 46
frame #9: 0x055bf5ea libdispatch.dylib`_dispatch_call_block_and_release + 15
frame #10: 0x055e1bef libdispatch.dylib`_dispatch_client_callout + 14
frame #11: 0x055c52ef libdispatch.dylib`_dispatch_after_timer_callback + 156
frame #12: 0x055e1bef libdispatch.dylib`_dispatch_client_callout + 14
frame #13: 0x055d713a libdispatch.dylib`_dispatch_source_latch_and_call + 1063
frame #14: 0x055ce325 libdispatch.dylib`_dispatch_source_invoke + 375
frame #15: 0x055c74ee libdispatch.dylib`_dispatch_main_queue_callback_4CF + 532
frame #16: 0x01f528ee CoreFoundation`__CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 14
frame #17: 0x01f105f0 CoreFoundation`__CFRunLoopRun + 2256
frame #18: 0x01f0fa5b CoreFoundation`CFRunLoopRunSpecific + 443
frame #19: 0x01f0f88b CoreFoundation`CFRunLoopRunInMode + 123
frame #20: 0x061a52c9 GraphicsServices`GSEventRunModal + 192
frame #21: 0x061a5106 GraphicsServices`GSEventRun + 104
frame #22: 0x0340a0b6 UIKit`UIApplicationMain + 1526
* frame #23: 0x0031584c CocoSoftIOSBaseApp`main + 140 at   AppDelegate.swift:16
frame #24: 0x0560cac9 libdyld.dylib`start + 1

......更多线程

0 个答案:

没有答案