DialogViewController包含一个EntryElement和RefreshRequested处理程序(参见下面的代码)。 在模拟器,调试模式下运行,在EntryElement中键入一些快速随机文本(包含空格)。崩溃将随之而来。
我做错了什么?
我想这是DialogViewController中的一个错误,它不会保留一些垃圾回收的图像。 是否有跟踪垃圾收集器和删除对象的开关?
违规代码:
[Register ("AppDelegate")]
public partial class AppDelegate : UIApplicationDelegate
{
// class-level declarations
UIWindow window;
UINavigationController navController;
DialogViewController dv ;
public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
// create a new window instance based on the screen size
window = new UIWindow (UIScreen.MainScreen.Bounds);
navController = new UINavigationController();
var root = new RootElement("Test") {
new Section("Quick type some text") {
new EntryElement("that contains spaces", string.Empty, string.Empty)
}
};
dv = new DialogViewController(root, true);
dv.RefreshRequested += HandleDvRefreshRequested; // comment this line fixes the bug
window.MakeKeyAndVisible ();
if (UIDevice.CurrentDevice.CheckSystemVersion (5, 0)) {
window.RootViewController = navController;
} else {
window.AddSubview (navController.View);
}
return true;
}
void HandleDvRefreshRequested (object sender, EventArgs e)
{
dv.ReloadComplete();
}
}
Starting iOS simulator 5.0 Launching application Application launched. PID = 4730 Loaded assembly: /Developer/MonoTouch/usr/lib/mono/2.1/monotouch.dll [External] Loaded assembly: /Developer/MonoTouch/usr/lib/mono/2.1/System.Core.dll [External] Loaded assembly: /Developer/MonoTouch/usr/lib/mono/2.1/System.dll [External] Thread started: Loaded assembly: /Users/user/Documents/iphone-cinetoile/Cinetoile.UI2/bin/iPhoneSimulator/Debug/MyApp.exe Loaded assembly: /Developer/MonoTouch/usr/lib/mono/2.1/MonoTouch.Dialog-1.dll [External] Loaded assembly: /Developer/MonoTouch/usr/lib/mono/2.1/Mono.Security.dll [External] Loaded assembly: /Developer/MonoTouch/usr/lib/mono/2.1/System.Xml.dll [External] Stacktrace: at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication.UIApplicationMain (int,string[],intptr,intptr) at MonoTouch.UIKit.UIApplication.Main (string[],string,string) [0x00042] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:29 at MyApp.Application.Main (string[]) [0x00000] in /Users/user/Documents/MyApp/Main.cs:17 at (wrapper runtime-invoke) .runtime_invoke_void_object (object,intptr,intptr,intptr)
原生堆栈跟踪:
0 MyApp 0x000908ec mono_handle_native_sigsegv + 284
1 MyApp 0x00005c88 mono_sigsegv_signal_handler + 248
2 libSystem.B.dylib 0x9141905b _sigtramp + 43
3 ??? 0xffffffff 0x0 + 4294967295
4 ??? 0x92c013ef 0x0 + 2462061551
5 ??? 0x92c011ee 0x0 + 2462061038
6 ??? 0x987a313c 0x0 + 2558144828
7 CoreGraphics 0x91b49e20 CGDataProviderRetain + 22
8 ??? 0x9880c456 0x0 + 2558575702
9 ImageIO 0x9754a0d2 CGImageReadCreateWithProvider + 185
10 ImageIO 0x97549fee CGImageSourceCreateWithDataProvider + 186
11 CoreGraphics 0x013c0d2f CGImageCreateWithPNGDataProvider + 87
12 WebCore 0x073ca2a5 WKGraphicsCreateImageFromBundleWithName + 373
13 WebCore 0x06c1c5bd _ZN7WebCore15GraphicsContext23drawLineForTextCheckingERKNS_10FloatPointEfNS0_21TextCheckingLineStyleE + 369
14 WebCore 0x06cf6e84 _ZN7WebCore13InlineTextBox28paintSpellingOrGrammarMarkerEPNS_15GraphicsContextERKNS_10FloatPointERKNS_14DocumentMarkerEPNS_11RenderStyleERKNS_4FontEb + 1684
15 WebCore 0x06cf6fb9 _ZN7WebCore13InlineTextBox20paintDocumentMarkersEPNS_15GraphicsContextERKNS_10FloatPointEPNS_11RenderStyleERKNS_4FontEb + 297
16 WebCore 0x06cf33fc _ZN7WebCore13InlineTextBox5paintERNS_9PaintInfoEiiii + 6490
17 WebCore 0x06cec3cd _ZN7WebCore13InlineFlowBox5paintERNS_9PaintInfoEiiii + 1065
18 WebCore 0x0724d24c _ZN7WebCore13RootInlineBox5paintERNS_9PaintInfoEiiii + 64
19 WebCore 0x071a8e2a _ZNK7WebCore17RenderLineBoxList5paintEPNS_20RenderBoxModelObjectERNS_9PaintInfoEii + 638
20 WebCore 0x07142089 _ZN7WebCore11RenderBlock11paintObjectERNS_9PaintInfoEii + 369
21 WebCore 0x0714248f _ZN7WebCore11RenderBlock5paintERNS_9PaintInfoEii + 307
22 WebCore 0x07141615 _ZN7WebCore11RenderBlock13paintChildrenERNS_9PaintInfoEii + 467
23 WebCore 0x071420ab _ZN7WebCore11RenderBlock11paintObjectERNS_9PaintInfoEii + 403
24 WebCore 0x0714248f _ZN7WebCore11RenderBlock5paintERNS_9PaintInfoEii + 307
25 WebCore 0x07141615 _ZN7WebCore11RenderBlock13paintChildrenERNS_9PaintInfoEii + 467
26 WebCore 0x071420ab _ZN7WebCore11RenderBlock11paintObjectERNS_9PaintInfoEii + 403
27 WebCore 0x0714248f _ZN7WebCore11RenderBlock5paintERNS_9PaintInfoEii + 307
28 WebCore 0x07141615 _ZN7WebCore11RenderBlock13paintChildrenERNS_9PaintInfoEii + 467
29 WebCore 0x071420ab _ZN7WebCore11RenderBlock11paintObjectERNS_9PaintInfoEii + 403
30 WebCore 0x0714248f _ZN7WebCore11RenderBlock5paintERNS_9PaintInfoEii + 307
31 WebCore 0x071961b0 _ZN7WebCore11RenderLayer10paintLayerEPS0_PNS_15GraphicsContextERKNS_7IntRectEjPNS_12RenderObjectEPN3WTF7HashMapIPNS_24OverlapTestRequestClientES4_NS9_7PtrHashISC_EENS9_10HashTraitsISC_EENSF_IS4_EEEEj + 3684
32 WebCore 0x0719648c _ZN7WebCore11RenderLayer10paintLayerEPS0_PNS_15GraphicsContextERKNS_7IntRectEjPNS_12RenderObjectEPN3WTF7HashMapIPNS_24OverlapTestRequestClientES4_NS9_7PtrHashISC_EENS9_10HashTraitsISC_EENSF_IS4_EEEEj + 4416
33 WebCore 0x071973bb _ZN7WebCore11RenderLayer5paintEPNS_15GraphicsContextERKNS_7IntRectEjPNS_12RenderObjectE + 101
34 WebCore 0x06bef809 _ZN7WebCore9FrameView13paintContentsEPNS_15GraphicsContextERKNS_7IntRectE + 591
35 WebKit 0x067a51d0 -[WebFrame(WebInternal) _drawRect:contentsOnly:] + 368
36 WebKit 0x067cc83c -[WebHTMLView drawSingleRect:] + 124
37 WebKit 0x067cc786 -[WebHTMLView drawRect:] + 118
38 WebCore 0x07392c2f _ZL12drawCallbackP6WKView6CGRectPv + 95
39 WebCore 0x073cd52c _ZL11_WKViewDrawP9CGContextP6WKView6CGRectb + 492
40 WebCore 0x073cd61f _ZL11_WKViewDrawP9CGContextP6WKView6CGRectb + 735
41 WebCore 0x073cd61f _ZL11_WKViewDrawP9CGContextP6WKView6CGRectb + 735
42 WebCore 0x073cd61f _ZL11_WKViewDrawP9CGContextP6WKView6CGRectb + 735
43 WebCore 0x073cd61f _ZL11_WKViewDrawP9CGContextP6WKView6CGRectb + 735
44 WebCore 0x073cd80e WKViewDisplayRect + 158
45 WebCore 0x073cead0 WKWindowDrawRect + 48
46 WebCore 0x0735daf0 _ZN7WebCore9TileCache9drawLayerEP9TileLayerP9CGContext + 880
47 WebCore 0x07362af1 -[TileLayer drawInContext:] + 49
48 QuartzCore 0x0417212d _ZL16backing_callbackP9CGContextPv + 88
49 QuartzCore 0x0409215d CABackingStoreUpdate_ + 2636
50 QuartzCore 0x04171fd2 _ZN2CA5Layer8display_Ev + 1370
51 QuartzCore 0x0415fcf1 -[CALayer _display] + 33
52 QuartzCore 0x04166281 _ZN2CA5Layer7displayEv + 165
53 QuartzCore 0x0415fd17 -[CALayer display] + 33
54 QuartzCore 0x04169c5c _ZN2CA5Layer17display_if_neededEPNS_11TransactionE + 256
55 QuartzCore 0x040effb9 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 395
56 QuartzCore 0x040f1ea6 _ZN2CA11Transaction6commitEv + 374
57 QuartzCore 0x040f1580 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 80
58 CoreFoundation 0x011959ce __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30
59 CoreFoundation 0x0112c670 __CFRunLoopDoObservers + 384
60 CoreFoundation 0x010f84f6 __CFRunLoopRun + 1174
61 CoreFoundation 0x010f7db4 CFRunLoopRunSpecific + 212
62 CoreFoundation 0x010f7ccb CFRunLoopRunInMode + 123
63 GraphicsServices 0x04789879 GSEventRunModal + 207
64 GraphicsServices 0x0478993e GSEventRun + 114
65 UIKit 0x02190a9b UIApplicationMain + 1175
66 ??? 0x0cda47fd 0x0 + 215631869
67 ??? 0x0cc78ea0 0x0 + 214404768
68 ??? 0x0cc78b98 0x0 + 214403992
69 ??? 0x0cc78cee 0x0 + 214404334
70 MyApp 0x00009ff2 mono_jit_runtime_invoke + 722
71 MyApp 0x00169eee mono_runtime_invoke + 126
72 MyApp 0x0016dfd4 mono_runtime_exec_main + 420
73 MyApp 0x001733f5 mono_runtime_run_main + 725
74 MyApp 0x000671f5 mono_jit_exec + 149
75 MyApp 0x002116c9 main + 2825
76 MyApp 0x00003045 start + 53
================================================================= Got a SIGSEGV while executing native code. This usually indicates a fatal error in the mono runtime or one of the native libraries used by your application. =================================================================
答案 0 :(得分:1)
这是 Autocorrection
反击的案例,又名错误#325(以及相当多的重复内容),它是not MonoTouch specific
有些东西,在内心深处,模拟的iOS被破坏并显示,而它想要绘制它的小红线以显示拼写错误的内容。
只有在UITextField
启用了自动更正功能时才会在模拟器中发生 。像这样关掉它:
new EntryElement("that contains spaces", string.Empty, string.Empty) {
AutocorrectionType = UITextAutocorrectionType.No
}
将解决问题(您只能使用#define
进行模拟器构建。)