在我的应用中,我使用了一个textfield
。点击textfield
时,device
keyboard
会出现,而我会在textfield
中输入一些文字。那时应用程序在iPad Pro 11.2.5
版本中崩溃了。我不知道应用程序崩溃的原因,因为相同的代码在iPad Pro 10.3
版本中运行良好。请查看下面的崩溃分析报告
Crashed: com.apple.main-thread
0 libobjc.A.dylib 0x184410430 objc_msgSend + 16
1 CoreFoundation 0x18514513c __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 20
2 CoreFoundation 0x1851446dc _CFXRegistrationPost + 420
3 CoreFoundation 0x185144440 ___CFXNotificationPost_block_invoke + 60
4 CoreFoundation 0x1851c1e24 -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1408
5 CoreFoundation 0x18507ad60 _CFXNotificationPost + 380
6 Foundation 0x185aa7348 -[NSNotificationCenter postNotificationName:object:userInfo:] + 68
7 UIFoundation 0x18f8c4570 -[NSTextStorage processEditing] + 240
8 UIFoundation 0x18f8c41d8 -[NSTextStorage endEditing] + 92
9 UIKit 0x18e914368 -[UITextInputController _insertText:fromKeyboard:] + 488
10 UIKit 0x18e9136d0 -[UITextInputController insertText:] + 400
11 UIKit 0x18ead3518 -[UIFieldEditor insertFilteredText:] + 968
12 UIKit 0x18f3eb3a0 -[UITextField insertFilteredText:] + 104
13 UIKit 0x18e91343c -[UIKeyboardImpl insertText:] + 136
14 UIKit 0x18ebd735c -[UIKeyboardImpl performKeyboardOutput:] + 756
15 UIKit 0x18ebd665c __55-[UIKeyboardImpl handleKeyboardInput:executionContext:]_block_invoke_2 + 256
16 UIKit 0x18f431fac -[UIKeyboardTaskEntry execute:] + 192
17 UIKit 0x18e7975f0 -[UIKeyboardTaskQueue continueExecutionOnMainThread] + 384
18 Foundation 0x185baf2e4 __NSThreadPerformPerform + 340
19 CoreFoundation 0x18515b77c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
20 CoreFoundation 0x18515b6fc __CFRunLoopDoSource0 + 88
21 CoreFoundation 0x18515af84 __CFRunLoopDoSources0 + 204
22 CoreFoundation 0x185158b5c __CFRunLoopRun + 1048
23 CoreFoundation 0x185078c58 CFRunLoopRunSpecific + 436
24 GraphicsServices 0x186f24f84 GSEventRunModal + 100
25 UIKit 0x18e7d15c4 UIApplicationMain + 236
26 Q App 0x1050b756c main (main.m:16)
27 libdyld.dylib 0x184b9856c start + 4
正如我的崩溃报告,我在该屏幕中没有使用NotificationCenter/observer
。但崩溃报告显示在NotificationCenter
。请知道解决方案吗?
答案 0 :(得分:0)
注意:以下内容不知道所有必需的详细信息,因为您没有提供有关如何实现该功能的任何源代码,此处显示的崩溃报告也不包含有关抛出异常代码/信号的任何信息。
顶部框架显示正在调用的方法objc_msgSend
。当运行时尝试向对象发送消息(方法)时,始终使用此方法。并且此方法中的崩溃通常意味着对象不再存在,这意味着它已被解除分配,但您的代码仍然保留了引用。
因此,这看起来像是代码中的内存管理问题。如果没有实际的实施,就无法提供任何有意义的帮助。
调试此方法的最佳方法是在调试模式下运行应用程序,并将设备连接到Xcode并获取更多详细信息。仪器工具还可以帮助找出问题所在。