Iphone 使用UIAlertView时出现奇怪的SIGABRT(发送到实例的无法识别的选择器)
在过去的半个小时里,我一直在用这个来砸我的头,所以我想我应该向Stack Overflow的朋友们请教一些智慧 我有一个选项卡栏应用程序,在根目录下有一个视图控制器,并将视图传递给其他Iphone 使用UIAlertView时出现奇怪的SIGABRT(发送到实例的无法识别的选择器),iphone,uialertview,sigabrt,Iphone,Uialertview,Sigabrt,在过去的半个小时里,我一直在用这个来砸我的头,所以我想我应该向Stack Overflow的朋友们请教一些智慧 我有一个选项卡栏应用程序,在根目录下有一个视图控制器,并将视图传递给其他xibs。我创建了一个自定义XIB,并将其视图控制器类(MoreViewController)添加为Interface Builder中的外部对象。当我链接我的方法时,当使用ui按钮调用方法时,我得到一个SIGABRT错误: 方法 - (IBAction)showAbout { alert = [[[UIA
xib
s。我创建了一个自定义XIB,并将其视图控制器类(MoreViewController
)添加为Interface Builder中的外部对象。当我链接我的方法时,当使用ui按钮调用方法时,我得到一个SIGABRT
错误:
方法
- (IBAction)showAbout {
alert = [[[UIAlertView alloc] initWithTitle:@"About" message:@"yadda yadda yadda some message" delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:nil] autorelease];
[alert show];
}
堆栈
2010-09-17 18:01:40.714 <appname>[7963:207] -[__NSCFType showAbout]: unrecognized selector sent to instance 0x5f6ef10
2010-09-17 18:01:40.716 <appname>[7963:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFType showAbout]: unrecognized selector sent to instance 0x5f6ef10'
*** Call stack at first throw:
(
0 CoreFoundation 0x0247eb99 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x025ce40e objc_exception_throw + 47
2 CoreFoundation 0x024806ab -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3 CoreFoundation 0x023f02b6 ___forwarding___ + 966
4 CoreFoundation 0x023efe72 _CF_forwarding_prep_0 + 50
5 UIKit 0x002b07f8 -[UIApplication sendAction:to:from:forEvent:] + 119
6 UIKit 0x0033bde0 -[UIControl sendAction:to:forEvent:] + 67
7 UIKit 0x0033e262 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
8 UIKit 0x0033ce0f -[UIControl touchesEnded:withEvent:] + 458
9 UIKit 0x002d43d0 -[UIWindow _sendTouchesForEvent:] + 567
10 UIKit 0x002b5cb4 -[UIApplication sendEvent:] + 447
11 UIKit 0x002ba9bf _UIApplicationHandleEvent + 7672
12 GraphicsServices 0x02d5e822 PurpleEventCallback + 1550
13 CoreFoundation 0x0245fff4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
14 CoreFoundation 0x023c0807 __CFRunLoopDoSource1 + 215
15 CoreFoundation 0x023bda93 __CFRunLoopRun + 979
16 CoreFoundation 0x023bd350 CFRunLoopRunSpecific + 208
17 CoreFoundation 0x023bd271 CFRunLoopRunInMode + 97
18 GraphicsServices 0x02d5d00c GSEventRunModal + 217
19 GraphicsServices 0x02d5d0d1 GSEventRun + 115
20 UIKit 0x002beaf2 UIApplicationMain + 1160
21 <appname> 0x00001b30 main + 102
22 <appname> 0x00001ac1 start + 53
)
terminate called after throwing an instance of 'NSException'
Program received signal: “SIGABRT”.
[Switching to process 7963]
(gdb)
我注意到,-[NSAutoreleasePool release]
在-[UIApplication-sendAction:to:from:forEvent:
之前被调用。。。这可能是我的问题吗?我将如何解决这个问题
再次感谢您的回复,每个人都很有帮助
编辑4
来自info malloc
命令的输出:
2010-09-17 19:41:57.305 <appname>[8440:207] *** -[MoreViewController performSelector:withObject:withObject:]: message sent to deallocated instance 0x63ae170
[Switching to process 8440]
(gdb) info malloc 0x63ae170
Alloc: Block address: 0x063ae170 length: 132
Stack - pthread: 0xa0541500 number of frames: 49
0: 0x947170c3 in malloc_zone_calloc
1: 0x9471701a in calloc
2: 0x25cdb5b in _internal_class_createInstanceFromZone
3: 0x25d07a6 in class_createInstance
4: 0x23a3108 in +[NSObject(NSObject) allocWithZone:]
5: 0x23a2f0a in +[NSObject(NSObject) alloc]
6: 0x4a6039 in -[UIClassSwapper initWithCoder:]
7: 0x1669c in _decodeObjectBinary
8: 0x15809 in _decodeObject
9: 0x4a5d77 in -[UIRuntimeConnection initWithCoder:]
10: 0x4a62e5 in -[UIRuntimeEventConnection initWithCoder:]
11: 0x1669c in _decodeObjectBinary
12: 0x1746d in -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:]
13: 0x17a9c in -[NSArray(NSArray) initWithCoder:]
14: 0x1669c in _decodeObjectBinary
15: 0x15809 in _decodeObject
16: 0x4a5034 in -[UINib instantiateWithOwner:options:]
17: 0x4a6eb5 in -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:]
18: 0x35c95f in -[UIViewController _loadViewFromNibNamed:bundle:]
19: 0x35a675 in -[UIViewController loadView]
20: 0x35a54f in -[UIViewController view]
21: 0x36c73e in -[UITabBarController transitionFromViewController:toViewController:transition:shouldSetSelected:]
22: 0x36b2b2 in -[UITabBarController transitionFromViewController:toViewController:]
23: 0x36d08c in -[UITabBarController _setSelectedViewController:]
24: 0x36cefb in -[UITabBarController _tabBarItemClicked:]
25: 0x2b07f8 in -[UIApplication sendAction:to:from:forEvent:]
26: 0x4ad2d0 in -[UITabBar _sendAction:withEvent:]
27: 0x2b07f8 in -[UIApplication sendAction:to:from:forEvent:]
28: 0x33bde0 in -[UIControl sendAction:to:forEvent:]
29: 0x33e262 in -[UIControl(Internal) _sendActionsForEvents:withEvent:]
30: 0x33bd97 in -[UIControl sendActionsForControlEvents:]
31: 0x2b07f8 in -[UIApplication sendAction:to:from:forEvent:]
32: 0x33bde0 in -[UIControl sendAction:to:forEvent:]
33: 0x33e262 in -[UIControl(Internal) _sendActionsForEvents:withEvent:]
34: 0x33ce0f in -[UIControl touchesEnded:withEvent:]
35: 0x2d43d0 in -[UIWindow _sendTouchesForEvent:]
36: 0x2b5cb4 in -[UIApplication sendEvent:]
37: 0x2ba9bf in _UIApplicationHandleEvent
38: 0x2d5e822 in PurpleEventCallback
39: 0x245fff4 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__
40: 0x23c0807 in __CFRunLoopDoSource1
41: 0x23bda93 in __CFRunLoopRun
42: 0x23bd350 in CFRunLoopRunSpecific
43: 0x23bd271 in CFRunLoopRunInMode
44: 0x2d5d00c in GSEventRunModal
45: 0x2d5d0d1 in GSEventRun
46: 0x2beaf2 in UIApplicationMain
47: 0x1a78 in main at /Users/Sean/Desktop/<appname>/main.m:13
48: 0x1a09 in start
2010-09-17 19:41:57.305[8440:207]***-[MoreViewController性能选择器:withObject:withObject:]:消息发送到解除分配的实例0x63ae170
[切换到流程8440]
(gdb)信息malloc 0x63ae170
Alloc:块地址:0x063ae170长度:132
堆栈-pthread:0xa0541500帧数:49
0:0x947170c3位于malloc_zone_calloc中
calloc中的1:0x9471701a
2:内部类createInstanceFromZone中的0x25cdb5b
3:0x25d07a6在类_createInstance中
4:0x23a3108 in+[NSObject(NSObject)allocWithZone:]
+[NSObject(NSObject)alloc]中的5:0x23a2f0a
6:0x4a6039 in-[UIClassSwapper initWithCoder:]
7:0x1669c在_decodeObjectBinary中
8:0x15809英寸解码对象
9:0x4a5d77 in-[UIRuntimeConnection initWithCoder:]
10:0x4a62e5 in-[UIRuntimeEventConnection initWithCoder:]
11:0x1669c在_decodeObjectBinary中
12:0x1746d in-[NSKeyedUnarchiver\u decodeArrayofObjectsMarkey:]
13:0x17a9c in-[NSArray(NSArray)initWithCoder:]
14:0x1669c在_decodeObjectBinary中
15:0x15809英寸解码对象
16:0x4a5034 in-[UINib实例化所有者:选项:]
17:0x4a6eb5 in-[NSBundle(UINSBUNDLEADTIONS)LOADNIBNAME:所有者:选项:]
18:0x35c95f in-[UIViewController\u LoadViewFromNibName:bundle:]
19:0x35a675英寸-[UIViewController loadView]
20:0x35a54f in-[UIViewController视图]
21:0x36c73e in-[UITabBarController转换从ViewController:到ViewController:转换:应选择设置:]
22:0x36b2b2 in-[UITabBarController从ViewController:到ViewController:的转换]
23:0x36d08c输入-[UITabBarController\u SETSELECTED VIEW控制器:]
24:0x36cefb in-[UITabBarController\u tabBarItemClicked:]
25:0x2b07f8 in-[UIApplication sendAction:to:from:forEvent:]
26:0x4ad2d0 in-[UITabBar\U sendAction:withEvent:]
27:0x2b07f8 in-[UIApplication sendAction:to:from:forEvent:]
28:0x33bde0 in-[UIControl发送操作:发送到:forEvent:]
29:0x33e262 in-[UIControl(内部)\发送操作预防:带事件:]
30:0x33bd97 in-[UIControl发送操作控件事件:]
31:0x2b07f8 in-[UIApplication sendAction:to:from:forEvent:]
32:0x33bde0 in-[UIControl发送操作:发送到:forEvent:]
33:0x33e262 in-[UIControl(内部)\发送操作预防:带事件:]
34:0x33ce0f in-[UIControl触摸已结束:带事件:]
35:0x2d43d0 in-[UIWindow\u sendTouchesForEvent:]
36:0x2b5cb4 in-[UIApplication sendEvent:]
37:0x2ba9bf in _UIApplicationHandleEvent
38:0x2d5e822英寸紫红色返回
39:0x245fff4 in u\u CFRUNLOOP\u正在调用u OUT\u以执行函数__
40:0x23c0807英寸\uuuu CFRunLoopDoSource1
41:0x23bda93在_ucfrunlooprun中
CFRunLoopRunSpecific中的42:0x23bd350
43:0x23bd271处于cfrunloop运行模式
GSEventRunModal中的44:0x2d5d00c
GSEventRun中的45:0x2d5d0d1
UIApplicationMain中的46:0x2beaf2
47:0x1a78位于/Users/Sean/Desktop//main.m:13的主目录中
48:0x1a09处于启动状态
编辑5
我还没弄明白。。。有人能帮忙吗?您之所以收到此消息,是因为您发送的showAbout:对象没有响应该选择器。您可能指向错误的目标,或者您的目标的指针正在更改
很难说没有看到更多的代码。如果您正在IB中创建按钮,您可能没有正确连接插座
编辑:根据新代码,MoveViewController对象似乎未正确保留。要获取有关指定实例的信息,可以启用MallocStackLoggingNoCompact,方法与启用NSZombieEnabled相同。当您收到错误时,您可以使用
malloc_历史实例_地址
或
信息malloc实例地址
这是一篇非常适合这种调试的文章
之所以会出现这种情况,是因为您发送showAbout:to的对象没有响应该选择器。您可能指向错误的目标,或者您的目标的指针正在更改
很难说没有看到更多的代码。如果您正在IB中创建按钮,您可能没有正确连接插座
编辑:根据新代码,MoveViewController对象似乎未正确保留。要获取有关指定实例的信息,可以启用MallocStackLoggingNoCompact,方法与启用NSZombieEnabled相同。当您收到错误时,您可以使用
malloc_历史实例_地址
或
信息malloc实例地址
这是一篇非常适合这种调试的文章
我没有找出原因,但是通过将视图移动到一个XIB
中,错误得到了解决
无论如何,谢谢。我没有找出原因,但是通过将视图移动到一个XIB
中,错误得到了解决
无论如何,谢谢。不,您正在将消息“showAbout”发送给某个对象,而该对象无法恢复
# Category Event Type RefCt Timestamp Address Size Responsible Library Responsible Caller
0 MoreViewController Malloc 1 2968170752 0x5fa5ee0 144 UIKit -[UIClassSwapper initWithCoder:]
1 MoreViewController Retain 2 2968226816 0x5fa5ee0 0 UIKit -[UIRuntimeConnection initWithCoder:]
2 MoreViewController Retain 3 2968229888 0x5fa5ee0 0 Foundation -[NSKeyedUnarchiver _replaceObject:withObject:]
3 MoreViewController Release 2 2968232704 0x5fa5ee0 0 UIKit -[UIRuntimeConnection initWithCoder:]
4 MoreViewController Retain 3 2968236800 0x5fa5ee0 0 UIKit -[UIRuntimeConnection initWithCoder:]
5 MoreViewController Autorelease 2968259840 0x5fa5ee0 0 UIKit -[UIRuntimeConnection initWithCoder:]
6 MoreViewController Retain 4 2968262912 0x5fa5ee0 0 UIKit -[UIRuntimeConnection initWithCoder:]
7 MoreViewController Retain 5 2968322816 0x5fa5ee0 0 UIKit -[UIRuntimeConnection initWithCoder:]
8 MoreViewController Autorelease 2968324864 0x5fa5ee0 0 UIKit -[UIRuntimeConnection initWithCoder:]
9 MoreViewController Retain 6 2968331776 0x5fa5ee0 0 UIKit -[UIRuntimeConnection initWithCoder:]
10 MoreViewController Retain 7 2986161920 0x5fa5ee0 0 UIKit -[UIRuntimeConnection initWithCoder:]
11 MoreViewController Autorelease 2986163712 0x5fa5ee0 0 UIKit -[UIRuntimeConnection initWithCoder:]
12 MoreViewController Retain 8 2986166784 0x5fa5ee0 0 UIKit -[UIRuntimeConnection initWithCoder:]
13 MoreViewController Retain 9 2986367744 0x5fa5ee0 0 UIKit -[UIRuntimeConnection initWithCoder:]
14 MoreViewController Autorelease 2986369792 0x5fa5ee0 0 UIKit -[UIRuntimeConnection initWithCoder:]
15 MoreViewController Retain 10 2986371840 0x5fa5ee0 0 UIKit -[UIRuntimeConnection initWithCoder:]
16 MoreViewController Release 9 2986498816 0x5fa5ee0 0 UIKit -[UINib instantiateWithOwner:options:]
17 MoreViewController Release 8 2986510848 0x5fa5ee0 0 UIKit -[UINib instantiateWithOwner:options:]
18 MoreViewController Release 7 2986524928 0x5fa5ee0 0 UIKit -[UINib instantiateWithOwner:options:]
19 MoreViewController Release 6 2986529792 0x5fa5ee0 0 UIKit -[UINib instantiateWithOwner:options:]
20 MoreViewController Retain 7 2986635008 0x5fa5ee0 0 Foundation -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:]
21 MoreViewController Retain 8 2986648832 0x5fa5ee0 0 Foundation -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:]
22 MoreViewController Release 7 2986650880 0x5fa5ee0 0 Foundation -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:]
23 MoreViewController Retain 8 2986679040 0x5fa5ee0 0 Foundation -[NSArray(NSArray) initWithCoder:]
24 MoreViewController Release 7 2986705920 0x5fa5ee0 0 UIKit -[UINib instantiateWithOwner:options:]
25 MoreViewController Retain 8 2986823936 0x5fa5ee0 0 Foundation -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:]
26 MoreViewController Retain 9 2986860800 0x5fa5ee0 0 Foundation -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:]
27 MoreViewController Release 8 2986900736 0x5fa5ee0 0 Foundation -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:]
28 MoreViewController Retain 9 2986923776 0x5fa5ee0 0 Foundation -[NSArray(NSArray) initWithCoder:]
29 MoreViewController Release 8 2986969856 0x5fa5ee0 0 UIKit -[UINib instantiateWithOwner:options:]
30 MoreViewController Retain 9 2987261952 0x5fa5ee0 0 UIKit -[UINib instantiateWithOwner:options:]
31 MoreViewController Release 8 2987425792 0x5fa5ee0 0 Foundation -[NSKeyedUnarchiver dealloc]
32 MoreViewController Release 7 2987520000 0x5fa5ee0 0 Foundation -[NSKeyedUnarchiver dealloc]
33 MoreViewController Release 6 2987686656 0x5fa5ee0 0 Foundation -[NSKeyedUnarchiver dealloc]
34 MoreViewController Release 5 2987698944 0x5fa5ee0 0 Foundation -[NSKeyedUnarchiver dealloc]
35 MoreViewController Release 4 2987756032 0x5fa5ee0 0 UIKit -[UIRuntimeConnection dealloc]
36 MoreViewController Release 3 2987793920 0x5fa5ee0 0 UIKit -[UIRuntimeConnection dealloc]
37 MoreViewController Release 2 2987811840 0x5fa5ee0 0 UIKit -[UIRuntimeConnection dealloc]
38 MoreViewController Release 1 2987849984 0x5fa5ee0 0 UIKit -[UIRuntimeConnection dealloc]
39 MoreViewController Release 0 2994390016 0x5fa5ee0 0 Foundation -[NSAutoreleasePool release]
40 MoreViewController Zombie -1 6312182784 0x5fa5ee0 0 UIKit -[UIApplication sendAction:to:from:forEvent:]
2010-09-17 19:41:57.305 <appname>[8440:207] *** -[MoreViewController performSelector:withObject:withObject:]: message sent to deallocated instance 0x63ae170
[Switching to process 8440]
(gdb) info malloc 0x63ae170
Alloc: Block address: 0x063ae170 length: 132
Stack - pthread: 0xa0541500 number of frames: 49
0: 0x947170c3 in malloc_zone_calloc
1: 0x9471701a in calloc
2: 0x25cdb5b in _internal_class_createInstanceFromZone
3: 0x25d07a6 in class_createInstance
4: 0x23a3108 in +[NSObject(NSObject) allocWithZone:]
5: 0x23a2f0a in +[NSObject(NSObject) alloc]
6: 0x4a6039 in -[UIClassSwapper initWithCoder:]
7: 0x1669c in _decodeObjectBinary
8: 0x15809 in _decodeObject
9: 0x4a5d77 in -[UIRuntimeConnection initWithCoder:]
10: 0x4a62e5 in -[UIRuntimeEventConnection initWithCoder:]
11: 0x1669c in _decodeObjectBinary
12: 0x1746d in -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:]
13: 0x17a9c in -[NSArray(NSArray) initWithCoder:]
14: 0x1669c in _decodeObjectBinary
15: 0x15809 in _decodeObject
16: 0x4a5034 in -[UINib instantiateWithOwner:options:]
17: 0x4a6eb5 in -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:]
18: 0x35c95f in -[UIViewController _loadViewFromNibNamed:bundle:]
19: 0x35a675 in -[UIViewController loadView]
20: 0x35a54f in -[UIViewController view]
21: 0x36c73e in -[UITabBarController transitionFromViewController:toViewController:transition:shouldSetSelected:]
22: 0x36b2b2 in -[UITabBarController transitionFromViewController:toViewController:]
23: 0x36d08c in -[UITabBarController _setSelectedViewController:]
24: 0x36cefb in -[UITabBarController _tabBarItemClicked:]
25: 0x2b07f8 in -[UIApplication sendAction:to:from:forEvent:]
26: 0x4ad2d0 in -[UITabBar _sendAction:withEvent:]
27: 0x2b07f8 in -[UIApplication sendAction:to:from:forEvent:]
28: 0x33bde0 in -[UIControl sendAction:to:forEvent:]
29: 0x33e262 in -[UIControl(Internal) _sendActionsForEvents:withEvent:]
30: 0x33bd97 in -[UIControl sendActionsForControlEvents:]
31: 0x2b07f8 in -[UIApplication sendAction:to:from:forEvent:]
32: 0x33bde0 in -[UIControl sendAction:to:forEvent:]
33: 0x33e262 in -[UIControl(Internal) _sendActionsForEvents:withEvent:]
34: 0x33ce0f in -[UIControl touchesEnded:withEvent:]
35: 0x2d43d0 in -[UIWindow _sendTouchesForEvent:]
36: 0x2b5cb4 in -[UIApplication sendEvent:]
37: 0x2ba9bf in _UIApplicationHandleEvent
38: 0x2d5e822 in PurpleEventCallback
39: 0x245fff4 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__
40: 0x23c0807 in __CFRunLoopDoSource1
41: 0x23bda93 in __CFRunLoopRun
42: 0x23bd350 in CFRunLoopRunSpecific
43: 0x23bd271 in CFRunLoopRunInMode
44: 0x2d5d00c in GSEventRunModal
45: 0x2d5d0d1 in GSEventRun
46: 0x2beaf2 in UIApplicationMain
47: 0x1a78 in main at /Users/Sean/Desktop/<appname>/main.m:13
48: 0x1a09 in start