Последние полчаса я ломал голову над этим, поэтому подумал, что попрошу у моих друзей из Stack Overflow мудрости.
У меня естьПриложение панели вкладок с контроллером представления в корне и передачей представлений другим xib
s.Я создал пользовательский XIB и добавил его класс контроллера представления (MoreViewController
) как External Object
в Интерфейсном Разработчике.Когда я связываю свои методы, я получаю ошибку SIGABRT
при вызове метода с UIButton
:
Метод
- (IBAction)showAbout {
alert = [[[UIAlertView alloc] initWithTitle:@"About" message:@"yadda yadda yadda some message" delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:nil] autorelease];
[alert show];
}
Stack
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)
Может кто-нибудь пролить свет на это?
Заранее спасибо!
РЕДАКТИРОВАТЬ Хорошо, я включил NSZombie и ... Я получаю менее загадочную ошибку!Woohoo!
2010-09-17 18:48:56.576 <appname>[8088:207] *** -[MoreViewController performSelector:withObject:withObject:]: message sent to deallocated instance 0x5fa98e0
РЕДАКТИРОВАТЬ 2 В режиме «Зомби инструментов» мне удалось раскрыть содержимое адреса памяти, указанного ниже:
# 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:]
Я заметил, что -[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
РЕДАКТИРОВАТЬ 5
Я до сих пор не понял этого ... может ли кто-нибудь помочь?