English 中文(简体)
Mono Touch为什么在这一简单的法典上坠毁?
原标题:Why does MonoTouch crash on this simple code?

I totally do NOT understand why MonoTouch is crashing on this code. Let me outline my steps to get to this point:

  1. New Project
  2. New > iPhone View with Controller (called TestScreen)
  3. In Main.cs, added: window.AddSubview(new TestScreen().View);
  4. Added button to the TestScreen UIView, and added an outlet called testButton on File s Owner (which should be my TestScreen controller), and linked up the button to that outlet.

Then, I added the following code:

public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();

            this.testButton.SetTitle("Test", UIControlState.Normal); // this works!
            this.testButton.TouchUpInside += HandleTestButtonhandleTouchUpInside;
        }

        int i = 0;
        void HandleTestButtonhandleTouchUpInside (object sender, EventArgs e)
        {
            i += 1;
            this.testButton.SetTitle("Testing " + i.ToString(), UIControlState.Normal); // this crashes!
        }

Question is: Why does the this.testButton.SetTitle() method cause a crash?

在坠毁时应用产出:

Stacktrace:

at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication.UIApplicationMain (int,string[],intptr,intptr) at MonoTouch.UIKit.UIApplication.Main (string[],string,string) [0x00038] in /Users/plasma/Source/iphone/monotouch/UIKit/UIApplication.cs:26
at MonoTouch.UIKit.UIApplication.Main (string[]) [0x00000] in /Users/plasma/Source/iphone/monotouch/UIKit/UIApplication.cs:31 at MyApp.Application.Main (string[]) [0x00000] in /Users/username/Projects/MyApp/MyApp/Main.cs:14 at (wrapper runtime-invoke) .runtime_invoke_void_object (object,intptr,intptr,intptr)

土著阶层:

0   MyApp               0x000d1965 mono_handle_native_sigsegv + 343
1   MyApp               0x0000ffb4 mono_sigsegv_signal_handler + 322
2   libSystem.B.dylib                   0x9476845b _sigtramp + 43
3   ???                                 0xffffffff 0x0 + 4294967295
4   UIKit                               0x01c981b5 -[UIControl sendAction:to:forEvent:] + 67
5   UIKit                               0x01c9a647 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
6   UIKit                               0x01c991f4 -[UIControl touchesEnded:withEvent:] + 458
7   UIKit                               0x01c2e0d1 -[UIWindow _sendTouchesForEvent:] + 567
8   UIKit                               0x01c0f37a -[UIApplication sendEvent:] + 447
9   UIKit                               0x01c14732 _UIApplicationHandleEvent + 7576
10  GraphicsServices                    0x03edfa36 PurpleEventCallback + 1550
11  CoreFoundation                      0x00e21064 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
12  CoreFoundation                      0x00d816f7 __CFRunLoopDoSource1 + 215
13  CoreFoundation                      0x00d7e983 __CFRunLoopRun + 979
14  CoreFoundation                      0x00d7e240 CFRunLoopRunSpecific + 208
15  CoreFoundation                      0x00d7e161 CFRunLoopRunInMode + 97
16  GraphicsServices                    0x03ede268 GSEventRunModal + 217
17  GraphicsServices                    0x03ede32d GSEventRun + 115
18  UIKit                               0x01c1842e UIApplicationMain + 1160
19  ???                                 0x09a7714b 0x0 + 161968459
20  ???                                 0x09a76f1c 0x0 + 161967900
21  ???                                 0x09a7651c 0x0 + 161965340
22  ???                                 0x09a76374 0x0 + 161964916
23  ???                                 0x09a764c6 0x0 + 161965254
24  MyApp               0x0000fd6f mono_jit_runtime_invoke + 1332
25  MyApp               0x001ee239 mono_runtime_invoke + 137
26  MyApp               0x001f0920 mono_runtime_exec_main + 669
27  MyApp               0x001efd0a mono_runtime_run_main + 843
28  MyApp               0x000a3c62 mono_jit_exec + 200
29  MyApp               0x002a25eb main + 3838
30  MyApp               0x000030c9 _start + 208
31  MyApp               0x00002ff8 start + 40

b. 胎儿衰减:

/tmp/mono-gdb-commands.DGcT7h:1: Error in sourced command file: unable to debug self

================================================================= 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.

最佳回答

错误在我的第三步中被证明是正确的。

我的<代码>新测试Screen()已超出范围,并出于某种原因加以处置。 改写成变量,然后以变数形式通过,然后改为“代议”,并确定。

问题回答
this.InvokeOnMainThread(delegate{
              i += 1;
                          ((UIButton) sender).SetTitle("Testing " + i.ToString(), UIControlState.Normal);

            });

要求将ender子投到UIButton。 我希望能够提供帮助。

void HandleTestButtonhandleTouchUpInside (object sender, EventArgs e)
    {
        i += 1;
        ((UIButton) sender).SetTitle("Testing " + i.ToString(), UIControlState.Normal);
    }




相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签