我遇到的问题是,在我的全新项目中,我有一个带按钮的窗口(Outlet和Action定义),在我的C#代码中,我已经连接了Action的部分void实现。然后我有一个View,我加载并执行相同的操作。
问题是View导致System.NullReferenceException,'Click'代码永远不会运行,而是我最终得到以下完整跟踪
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: /Users/drisszouak/Projects/ZenVelopes/ZenVelopes/bin/iPhoneSimulator/Debug/ZenVelopes.exe
Stacktrace:
at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication.UIApplicationMain (int,string[],intptr,intptr) <0x00004>
at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication.UIApplicationMain (int,string[],intptr,intptr) <0x00004>
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 ZenVelopes.Application.Main (string[]) [0x00000] in /Users/drisszouak/Projects/ZenVelopes/ZenVelopes/Main.cs:14
at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <IL 0x0001d, 0x00090>
Native stacktrace:
0 ZenVelopes 0x000be66f mono_handle_native_sigsegv + 343
1 ZenVelopes 0x0000e43e mono_sigsegv_signal_handler + 313
2 libSystem.B.dylib 0x9118246b _sigtramp + 43
3 ??? 0xffffffff 0x0 + 4294967295
4 UIKit 0x01def167 -[UIBarButtonItem(UIInternal) _sendAction:withEvent:] + 156
5 UIKit 0x01be1a6e -[UIApplication sendAction:to:from:forEvent:] + 119
6 UIKit 0x01c701b5 -[UIControl sendAction:to:forEvent:] + 67
7 UIKit 0x01c72647 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
8 UIKit 0x01c711f4 -[UIControl touchesEnded:withEvent:] + 458
9 UIKit 0x01c060d1 -[UIWindow _sendTouchesForEvent:] + 567
10 UIKit 0x01be737a -[UIApplication sendEvent:] + 447
11 UIKit 0x01bec732 _UIApplicationHandleEvent + 7576
12 GraphicsServices 0x03eb7a36 PurpleEventCallback + 1550
13 CoreFoundation 0x00df9064 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
14 CoreFoundation 0x00d596f7 __CFRunLoopDoSource1 + 215
15 CoreFoundation 0x00d56983 __CFRunLoopRun + 979
16 CoreFoundation 0x00d56240 CFRunLoopRunSpecific + 208
17 CoreFoundation 0x00d56161 CFRunLoopRunInMode + 97
18 GraphicsServices 0x03eb6268 GSEventRunModal + 217
19 GraphicsServices 0x03eb632d GSEventRun + 115
20 UIKit 0x01bf042e UIApplicationMain + 1160
21 ??? 0x09e39862 0x0 + 165910626
22 ??? 0x09e39632 0x0 + 165910066
23 ??? 0x09e38c9a 0x0 + 165907610
24 ??? 0x09e38aec 0x0 + 165907180
25 ??? 0x09e38ba1 0x0 + 165907361
26 ZenVelopes 0x0000e202 mono_jit_runtime_invoke + 1360
27 ZenVelopes 0x001c92af mono_runtime_invoke + 137
28 ZenVelopes 0x001caf6b mono_runtime_exec_main + 714
29 ZenVelopes 0x001ca891 mono_runtime_run_main + 812
30 ZenVelopes 0x00094fe8 mono_jit_exec + 200
31 ZenVelopes 0x0027cf05 main + 3494
32 ZenVelopes 0x00002ca1 _start + 208
33 ZenVelopes 0x00002bd0 start + 40
34 ??? 0x00000002 0x0 + 2
Debug info from gdb:
warning: Could not find object file "/var/folders/Ny/NyElTwhDGD8kZMqIEeLGXE+++TI/-Tmp-//cc6F1tBs.o" - no debug information available for "template.m".
warning: .o file "/Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator4.2.sdk/usr/lib/libmonotouch.a(zlib-helper.x86.42.o)" more recent than executable timestamp in "/Users/drisszouak/Library/Application Support/iPhone Simulator/4.2/Applications/9B8EA00C-09B4-4D08-ABF7-7CF4487F1A28/ZenVelopes.app/ZenVelopes"
warning: Could not open OSO file /Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator4.2.sdk/usr/lib/libmonotouch.a(zlib-helper.x86.42.o) to scan for pubtypes for objfile /Users/drisszouak/Library/Application Support/iPhone Simulator/4.2/Applications/9B8EA00C-09B4-4D08-ABF7-7CF4487F1A28/ZenVelopes.app/ZenVelopes
warning: .o file "/Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator4.2.sdk/usr/lib/libmonotouch.a(monotouch-glue.x86.42.o)" more recent than executable timestamp in "/Users/drisszouak/Library/Application Support/iPhone Simulator/4.2/Applications/9B8EA00C-09B4-4D08-ABF7-7CF4487F1A28/ZenVelopes.app/ZenVelopes"
warning: Could not open OSO file /Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator4.2.sdk/usr/lib/libmonotouch.a(monotouch-glue.x86.42.o) to scan for pubtypes for objfile /Users/drisszouak/Library/Application Support/iPhone Simulator/4.2/Applications/9B8EA00C-09B4-4D08-ABF7-7CF4487F1A28/ZenVelopes.app/ZenVelopes
warning: .o file "/Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator4.2.sdk/usr/lib/libmonotouch.a(gc.x86.42.o)" more recent than executable timestamp in "/Users/drisszouak/Library/Application Support/iPhone Simulator/4.2/Applications/9B8EA00C-09B4-4D08-ABF7-7CF4487F1A28/ZenVelopes.app/ZenVelopes"
warning: Could not open OSO file /Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator4.2.sdk/usr/lib/libmonotouch.a(gc.x86.42.o) to scan for pubtypes for objfile /Users/drisszouak/Library/Application Support/iPhone Simulator/4.2/Applications/9B8EA00C-09B4-4D08-ABF7-7CF4487F1A28/ZenVelopes.app/ZenVelopes
warning: .o file "/Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator4.2.sdk/usr/lib/libmonotouch.a(monotouch-glue.x86.42.o)" more recent than executable timestamp in "/Users/drisszouak/Library/Application Support/iPhone Simulator/4.2/Applications/9B8EA00C-09B4-4D08-ABF7-7CF4487F1A28/ZenVelopes.app/ZenVelopes"
warning: Couldn't open object file '/Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator4.2.sdk/usr/lib/libmonotouch.a(monotouch-glue.x86.42.o)'
Attaching to process 10857.
Reading symbols for shared libraries . done
Reading symbols for shared libraries ...................................................................................................................... done
0x91127459 in read$UNIX2003 ()
7 "WebThread" 0x9111c0fa in mach_msg_trap ()
6 0x9114a0a6 in __semwait_signal ()
5 0x911595fe in recvfrom$UNIX2003 ()
4 0x9111c136 in semaphore_wait_trap ()
3 0x9111c0fa in mach_msg_trap ()
2 "com.apple.libdispatch-manager" 0x91142982 in kevent ()
* 1 "com.apple.main-thread" 0x91127459 in read$UNIX2003 ()
Thread 7 (process 10857):
#0 0x9111c0fa in mach_msg_trap ()
#1 0x9111c867 in mach_msg ()
#2 0x00df94a6 in __CFRunLoopServiceMachPort ()
#3 0x00d56874 in __CFRunLoopRun ()
#4 0x00d56240 in CFRunLoopRunSpecific ()
#5 0x00d56161 in CFRunLoopRunInMode ()
#6 0x04f7c423 in RunWebThread ()
#7 0x9114985d in _pthread_start ()
#8 0x911496e2 in thread_start ()
Thread 6 (process 10857):
#0 0x9114a0a6 in __semwait_signal ()
#1 0x91175ee5 in nanosleep$UNIX2003 ()
#2 0x91175e23 in usleep$UNIX2003 ()
#3 0x0027714c in monotouch_pump_gc ()
#4 0x9114985d in _pthread_start ()
#5 0x911496e2 in thread_start ()
Thread 5 (process 10857):
#0 0x911595fe in recvfrom$UNIX2003 ()
#1 0x911793c7 in recv$UNIX2003 ()
#2 0x000d8cca in recv_length (fd=6, buf=0xb0388ebd, len=11, flags=0) at ../../../../mono/mini/debugger-agent.c:939
#3 0x000e616a in debugger_thread (arg=0x0) at ../../../../mono/mini/debugger-agent.c:6290
#4 0x002448e2 in thread_start_routine (args=0x80339a8) at ../../../../mono/io-layer/wthreads.c:286
#5 0x00274357 in GC_start_routine (arg=0x6ff6f60) at ../../../libgc/pthread_support.c:1390
#6 0x9114985d in _pthread_start ()
#7 0x911496e2 in thread_start ()
Thread 4 (process 10857):
#0 0x9111c136 in semaphore_wait_trap ()
#1 0x0015ae1d in finalizer_thread (unused=0x0) at ../../../../mono/metadata/gc.c:1026
#2 0x002034a3 in start_wrapper (data=0x7b18620) at ../../../../mono/metadata/threads.c:661
#3 0x002448e2 in thread_start_routine (args=0x80338b0) at ../../../../mono/io-layer/wthreads.c:286
#4 0x00274357 in GC_start_routine (arg=0x6ff6f60) at ../../../libgc/pthread_support.c:1390
#5 0x9114985d in _pthread_start ()
#6 0x911496e2 in thread_start ()
Thread 3 (process 10857):
#0 0x9111c0fa in mach_msg_trap ()
#1 0x9111c867 in mach_msg ()
#2 0x0011cc46 in mach_exception_thread (arg=0x0) at ../../../../mono/mini/mini-darwin.c:138
#3 0x9114985d in _pthread_start ()
#4 0x911496e2 in thread_start ()
Thread 2 (process 10857):
#0 0x91142982 in kevent ()
#1 0x9114309c in _dispatch_mgr_invoke ()
#2 0x91142559 in _dispatch_queue_invoke ()
#3 0x911422fe in _dispatch_worker_thread2 ()
#4 0x91141d81 in _pthread_wqthread ()
#5 0x91141bc6 in start_wqthread ()
Thread 1 (process 10857):
#0 0x91127459 in read$UNIX2003 ()
#1 0x000be81f in mono_handle_native_sigsegv (signal=11, ctx=0xbfffd228) at ../../../../mono/mini/mini-exceptions.c:1826
#2 0x0000e43e in mono_sigsegv_signal_handler (_dummy=10, info=0xbfffd1e8, context=0xbfffd228) at ../../../../mono/mini/mini.c:4846
#3 <signal handler called>
#4 0x028d6a63 in objc_msgSend ()
#5 0x07b96550 in ?? ()
#6 0x01def167 in -[UIBarButtonItem(UIInternal) _sendAction:withEvent:] ()
#7 0x01be1a6e in -[UIApplication sendAction:to:from:forEvent:] ()
#8 0x01c701b5 in -[UIControl sendAction:to:forEvent:] ()
#9 0x01c72647 in -[UIControl(Internal) _sendActionsForEvents:withEvent:] ()
#10 0x01c711f4 in -[UIControl touchesEnded:withEvent:] ()
#11 0x01c060d1 in -[UIWindow _sendTouchesForEvent:] ()
#12 0x01be737a in -[UIApplication sendEvent:] ()
#13 0x01bec732 in _UIApplicationHandleEvent ()
#14 0x03eb7a36 in PurpleEventCallback ()
#15 0x00df9064 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ ()
#16 0x00d596f7 in __CFRunLoopDoSource1 ()
#17 0x00d56983 in __CFRunLoopRun ()
#18 0x00d56240 in CFRunLoopRunSpecific ()
#19 0x00d56161 in CFRunLoopRunInMode ()
#20 0x03eb6268 in GSEventRunModal ()
#21 0x03eb632d in GSEventRun ()
#22 0x01bf042e in UIApplicationMain ()
#23 0x09e39862 in ?? ()
#24 0x09e39632 in ?? ()
#25 0x09e38c9a in ?? ()
#26 0x09e38aec in ?? ()
#27 0x09e38ba1 in ?? ()
#28 0x0000e202 in mono_jit_runtime_invoke (method=0x8119afc, obj=0x0, params=0xbfffed9c, exc=0x0) at ../../../../mono/mini/mini.c:4733
#29 0x001c92af in mono_runtime_invoke (method=0x8119afc, obj=0x0, params=0xbfffed9c, exc=0x0) at ../../../../mono/metadata/object.c:2615
#30 0x001caf6b in mono_runtime_exec_main (method=0x8119afc, args=0x9e0d1a0, exc=0x0) at ../../../../mono/metadata/object.c:3581
#31 0x001ca891 in mono_runtime_run_main (method=0x8119afc, argc=0, argv=0xbfffeed4, exc=0x0) at ../../../../mono/metadata/object.c:3355
#32 0x00094fe8 in mono_jit_exec (domain=0x6f91e58, assembly=0x7b8ca10, argc=1, argv=0xbfffeed0) at ../../../../mono/mini/driver.c:1094
#33 0x0027cf05 in main ()
=================================================================
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.
=================================================================
根据朋友的建议,我卸载了Mono,MonoTouch,MonoDevelop和iOS SDK,然后重新下载它们,在iOS SDK,Mono,MT(个人许可版),MD订单中重新安装它们。这并没有改变一件事。
我的Main中引用的第14行是这一行:
public class Application
{
static void Main (string[] args)
{
#14 ====> UIApplication.Main (args);
}
}
我正在接线的部分无效“点击”事件就是这个(仅用于测试目的)。代码永远不会到达这里,例外情况就会爆发。
partial void clickNewEnvelope (UIBarButtonItem sender)
{
int x;
x = 1;
}
当我创建一个新项目时,我会得到同样的东西。
我很难过,帮忙。
答案 0 :(得分:8)
看起来你正在悬挂UIBarButtonItem上的一个事件,而不是保留对它的引用。任何时候你做
foo.SomeEvent += delegate {};
您需要保留对“foo”的引用,以便不收集实现协议的隐藏类,因为在这种情况下UIBarButtonItem是该隐藏类的所有者。