Iphone 使用UIAlertView时出现奇怪的SIGABRT(发送到实例的无法识别的选择器)

Iphone 使用UIAlertView时出现奇怪的SIGABRT(发送到实例的无法识别的选择器),iphone,uialertview,sigabrt,Iphone,Uialertview,Sigabrt,在过去的半个小时里,我一直在用这个来砸我的头,所以我想我应该向Stack Overflow的朋友们请教一些智慧 我有一个选项卡栏应用程序,在根目录下有一个视图控制器,并将视图传递给其他xibs。我创建了一个自定义XIB,并将其视图控制器类(MoreViewController)添加为Interface Builder中的外部对象。当我链接我的方法时,当使用ui按钮调用方法时,我得到一个SIGABRT错误: 方法 - (IBAction)showAbout { alert = [[[UIA

在过去的半个小时里,我一直在用这个来砸我的头,所以我想我应该向Stack Overflow的朋友们请教一些智慧

我有一个选项卡栏应用程序,在根目录下有一个视图控制器,并将视图传递给其他
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