Storyboard Crash OSX - objective-c

I'm seeing this crash happen very randomly:
Fatal Exception: NSInvalidArgumentException
*** setObjectForKey: object cannot be nil (key: NSViewController-Qmf-WE-Bmb)
0 CoreFoundation 0x7fff95e504da __exceptionPreprocess
1 libobjc.A.dylib 0x7fff923eef7e objc_exception_throw
2 CoreFoundation 0x7fff95d4a414 -[__NSDictionaryM setObject:forKey:]
3 AppKit 0x7fff9857f917 -[NSStoryboard nibForControllerWithIdentifier:]
4 AppKit 0x7fff9857fc11 -[NSStoryboard instantiateControllerWithIdentifier:]
5 AppKit 0x7fff982e733b -[NSStoryboardSegueTemplate _perform:]
6 AppKit 0x7fff983345d7 -[NSViewController performSegueWithIdentifier:sender:]
7 libdispatch.dylib 0x7fff8e5cc93d _dispatch_call_block_and_release
8 libdispatch.dylib 0x7fff8e5c140b _dispatch_client_callout
9 libdispatch.dylib 0x7fff8e5d4c1c _dispatch_main_queue_callback_4CF
10 CoreFoundation 0x7fff95e059e9 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
11 CoreFoundation 0x7fff95dc48dd __CFRunLoopRun
12 CoreFoundation 0x7fff95dc3ed8 CFRunLoopRunSpecific
13 HIToolbox 0x7fff99b4b935 RunCurrentEventLoopInMode
14 HIToolbox 0x7fff99b4b76f ReceiveNextEventCommon
15 HIToolbox 0x7fff99b4b5af _BlockUntilNextEventMatchingListInModeWithFilter
16 AppKit 0x7fff97e3bdf6 _DPSNextEvent
17 AppKit 0x7fff97e3b226 -[NSApplication _nextEventMatchingEventMask:untilDate:inMode:dequeue:]
18 AppKit 0x7fff97e2fd80 -[NSApplication run]
19 AppKit 0x7fff97df9368 NSApplicationMain
20 libdyld.dylib 0x7fff8c6875ad start
I've verified that the segue identifier is correct and that the storyboard exists and contains the segue. I've also verified that there is a view controller with ID: Qmf-WE-Bmb.
Any clues why this would happen? Does this mean the source VC is deallocated or that its failing to load the destination VC?

In case anyone hits the same issue, I circumvented the crash by replacing performSegueWithIdentifier: with a custom function on my base controller:
- (void)performManualSegueWithControllerID:(NSString *)identifier {
if ([NSThread isMainThread]) {
NSViewController *controller = [self.storyboard instantiateControllerWithIdentifier:identifier];
if (controller) {
MyCustomAnimator *animator = [[MyCustomAnimator alloc] init];
[animator setAnimateVertically:NO];
[self prepareForManualSegueToController:controller];
[self presentViewController:controller animator:animator];
} else {
// Some Error
}
} else {
[self performSelectorOnMainThread:#selector(performManualSegueWithControllerID:)
withObject:identifier
waitUntilDone:NO];
}
}
- (void)prepareForManualSegueToController:(NSViewController *)controller {
}

Related

Zombie in Game Center's [addPlayersToMatch] inside a 20-liner project

I'm out of my depth with a zombie. findMatchForRequest: is inadequate for consistent matchmaking, hence the use of [addPlayersToMatch:matchRequest:completionHandler:] where it presumably crashes:
-[__NSMallocBlock__ intValue]: unrecognized selector sent to instance
-[CFString retain]: message sent to deallocated instance // NSZombieEnabled
Below is the whole 'minimum working example' project (on Dropbox) that sooner than later crashes.
#implementation GameCenterHelper { GKMatch* _currentMatch; }
+ (GameCenterHelper *)sharedInstance {
static GameCenterHelper* sharedHelper;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^ {
sharedHelper = [GameCenterHelper new];
});
return sharedHelper;
}
- (void)authenticateLocalPlayer {
[GKLocalPlayer localPlayer].authenticateHandler = ^(UIViewController *loginViewController, NSError *error) {
[self findMatch];
};
}
- (void)findMatch {
GKMatchRequest *request = [GKMatchRequest new];
request.minPlayers = 2;
request.maxPlayers = 4;
[[GKMatchmaker sharedMatchmaker] findMatchForRequest:request withCompletionHandler:^(GKMatch *match, NSError *error) {
_currentMatch = match;
_currentMatch.delegate = self;
}];
}
- (void)addPlayersToMatch {
GKMatchRequest *request = [GKMatchRequest new];
request.minPlayers = 2;
request.maxPlayers = 4;
[[GKMatchmaker sharedMatchmaker] addPlayersToMatch:_currentMatch matchRequest:request completionHandler:nil];
}
- (void)match:(GKMatch *)match player:(NSString *)playerID didChangeState:(GKPlayerConnectionState)state {
[self addPlayersToMatch];
}
#end
Am I missing something fundamental in memory management of blocks? The above gets called in:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[GameCenterHelper sharedInstance] authenticateLocalPlayer];
return YES;
}
There's no error handling here, and one has to create a mockup app on iTunesConnect to experience the crash, otherwise there's no GKMatch being returned. I also made sure that bundle versions between Xcode and iTunesConnect agree, i.e. 1.0 vs 1.0.0.
Traces
Zombie caught in Instruments:
Stack traces from Instruments for each Event Type seen above (Malloc, Release, Zombie):
Malloc at RefCt 1:
0 libsystem_malloc.dylib malloc_zone_malloc
1 CoreFoundation _CFRuntimeCreateInstance
2 CoreFoundation __CFStringCreateImmutableFunnel3
3 CoreFoundation CFStringCreateCopy
4 CoreFoundation _CFStringCreateWithFormatAndArgumentsAux
5 Foundation -[NSPlaceholderString initWithFormat:locale:arguments:]
6 Foundation -[NSString initWithFormat:]
7 GameKitServices -[GKConnectionInternal connectParticipantsWithConnectionData:withSessionInfo:]
8 GameCenterFoundation -[GKMatch connectToPeersWithDictionaries:version:sessionToken:cdxTicket:]
9 GameCenterFoundation __104-[GKMatchmaker matchWithRequest:currentMatch:currentPlayerIDs:serverHosted:rematchID:completionHandler:]_block_invoke_2
10 CoreFoundation __invoking___
11 CoreFoundation -[NSInvocation invoke]
12 GameCenterFoundation -[NSInvocation(GKProxyHelpers) _gkInvokeOnce]
13 GameCenterFoundation __53-[GKDaemonProxy connection:handleInvocation:isReply:]_block_invoke
14 libdispatch.dylib _dispatch_call_block_and_release
15 libdispatch.dylib _dispatch_client_callout
16 libdispatch.dylib _dispatch_main_queue_callback_4CF
17 CoreFoundation __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
18 CoreFoundation __CFRunLoopRun
19 CoreFoundation CFRunLoopRunSpecific
20 CoreFoundation CFRunLoopRunInMode
21 GraphicsServices GSEventRunModal
22 UIKit UIApplicationMain
23 GameCenterBug main /Volumes/Lion2/Developer/Objective-C/GameCenterBug/GameCenterBug/main.m:7
24 libdyld.dylib start
Release at RefCt 0:
0 CoreFoundation -[__NSCFString release]
1 GameKitServices -[GKConnectionInternal connectParticipantsWithConnectionData:withSessionInfo:]
2 GameCenterFoundation -[GKMatch connectToPeersWithDictionaries:version:sessionToken:cdxTicket:]
3 GameCenterFoundation __104-[GKMatchmaker matchWithRequest:currentMatch:currentPlayerIDs:serverHosted:rematchID:completionHandler:]_block_invoke_2
4 CoreFoundation __invoking___
5 CoreFoundation -[NSInvocation invoke]
6 GameCenterFoundation -[NSInvocation(GKProxyHelpers) _gkInvokeOnce]
7 GameCenterFoundation __53-[GKDaemonProxy connection:handleInvocation:isReply:]_block_invoke
8 libdispatch.dylib _dispatch_call_block_and_release
9 libdispatch.dylib _dispatch_client_callout
10 libdispatch.dylib _dispatch_main_queue_callback_4CF
11 CoreFoundation __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
12 CoreFoundation __CFRunLoopRun
13 CoreFoundation CFRunLoopRunSpecific
14 CoreFoundation CFRunLoopRunInMode
15 GraphicsServices GSEventRunModal
16 UIKit UIApplicationMain
17 GameCenterBug main /Volumes/Lion2/Developer/Objective-C/GameCenterBug/GameCenterBug/main.m:7
18 libdyld.dylib start
Zombie at RefCt -1:
0 CoreFoundation ___forwarding___
1 CoreFoundation _CF_forwarding_prep_0
2 libsystem_blocks.dylib _Block_object_assign
3 GameKitServices __copy_helper_block_355
4 libsystem_blocks.dylib _Block_copy_internal
5 libdispatch.dylib _dispatch_Block_copy
6 libdispatch.dylib dispatch_group_async
7 GameKitServices -[GKConnectionInternal connectParticipantsWithConnectionData:withSessionInfo:]
8 GameCenterFoundation -[GKMatch connectToPeersWithDictionaries:version:sessionToken:cdxTicket:]
9 GameCenterFoundation __104-[GKMatchmaker matchWithRequest:currentMatch:currentPlayerIDs:serverHosted:rematchID:completionHandler:]_block_invoke_2
10 CoreFoundation __invoking___
11 CoreFoundation -[NSInvocation invoke]
12 GameCenterFoundation -[NSInvocation(GKProxyHelpers) _gkInvokeOnce]
13 GameCenterFoundation __53-[GKDaemonProxy connection:handleInvocation:isReply:]_block_invoke
14 libdispatch.dylib _dispatch_call_block_and_release
15 libdispatch.dylib _dispatch_client_callout
16 libdispatch.dylib _dispatch_main_queue_callback_4CF
17 CoreFoundation __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
18 CoreFoundation __CFRunLoopRun
19 CoreFoundation CFRunLoopRunSpecific
20 CoreFoundation CFRunLoopRunInMode
21 GraphicsServices GSEventRunModal
22 UIKit UIApplicationMain
23 GameCenterBug main /Volumes/Lion2/Developer/Objective-C/GameCenterBug/GameCenterBug/main.m:7
24 libdyld.dylib start
Identical, pre-ARC question (with a dubious answer): -[CFString retain]: message sent to deallocated instance 0x215076c0
Related:
Game Center Finding a Match Programmatically
Can't add additional players with [GKMatchmaker addPlayersToMatch] on iPhone/IOS 5
Matt Gallagher's and ThirdCog's blog posts on blocks.
Just a few hours ago Apple said that the bug got fixed and that the fix will be in one of the next iOS versions.

Crashing with custom navigation controller

I ran into an issue when testing my application in iOS7. The application currently runs just fine in iOS5 and iOS6. Based on the stack trace, it would appear that a private method is causing the issue.
2013-11-21 17:00:56.565 MyApp[706:70b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'An override of -[UINavigationController navigationBar] is returning an object that is not a kind of UINavigationBar'
*** First throw call stack:
(
0 CoreFoundation 0x0244d5e4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x01eee8b6 objc_exception_throw + 44
2 CoreFoundation 0x0244d3bb +[NSException raise:format:] + 139
3 UIKit 0x00af796c -[UINavigationController _confirmBarAccessMethods] + 277
4 UIKit 0x00af7b19 -[UINavigationController initWithNibName:bundle:] + 271
5 MyApp 0x000b8bd8 -[CustomUINavigationController initWithNibName:bundle:] + 152
6 UIKit 0x00af77b3 -[UINavigationController initWithRootViewController:] + 86
7 MyApp 0x000b8ea1 -[CustomUINavigationController initWithRootViewController:] + 113
8 MyApp 0x0000260a -[AppDelegate application:didFinishLaunchingWithOptions:] + 666
9 UIKit 0x009c7355 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 309
10 UIKit 0x009c7b95 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1536
11 UIKit 0x009cc3a8 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 824
12 UIKit 0x009e087c -[UIApplication handleEvent:withNewEvent:] + 3447
13 UIKit 0x009e0de9 -[UIApplication sendEvent:] + 85
14 UIKit 0x009ce025 _UIApplicationHandleEvent + 736
15 GraphicsServices 0x0478b2f6 _PurpleEventCallback + 776
16 GraphicsServices 0x0478ae01 PurpleEventCallback + 46
17 CoreFoundation 0x023c8d65 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53
18 CoreFoundation 0x023c8a9b __CFRunLoopDoSource1 + 523
19 CoreFoundation 0x023f377c __CFRunLoopRun + 2156
20 CoreFoundation 0x023f2ac3 CFRunLoopRunSpecific + 467
21 CoreFoundation 0x023f28db CFRunLoopRunInMode + 123
22 UIKit 0x009cbadd -[UIApplication _run] + 840
23 UIKit 0x009cdd3b UIApplicationMain + 1225
24 MyApp 0x00002337 main + 295
25 MyApp 0x00002205 start + 53
)
libc++abi.dylib: terminating with uncaught exception of type NSException
This crash happens only when testing in iOS7. It happens as soon as [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil] is called. I cannot find any information about _confirmBarAccessMethods. I assume it is a private UINavigationController method.
Here is the header file for the CustomUINavigationController class:
#import <UIKit/UIKit.h>
#import "CustomUINavigationBar.h"
#interface CustomUINavigationController : UINavigationController
{
CustomUINavigationBar *customNavigationBar;
}
#property (nonatomic, retain) UIColor *titleColor;
#end
This is the init method in which the application crashes:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; // This line causes the application to crash
if (self) {
customNavigationBar = [[CustomUINavigationBar alloc] init];
[customNavigationBar setTintColor:[UIColor colorWithWhite:0.0 alpha:1.0]];
[customNavigationBar setItems:[NSArray array] animated:NO];
[customNavigationBar setDelegate:self];
self.titleColor = [UIColor colorWithWhite:1.0 alpha:1.0];
}
return self;
}
Here is the header file for CustomNavigationBar:
#import <UIKit/UIKit.h>
#interface CustomUINavigationBar : UINavigationBar
{
UIImage *background;
}
#end
Any help would be greatly appreciated. I can provide more information if necessary.
EDIT: Added trace from suggested solution of using custom navigation bar initializer
2013-11-22 13:04:49.756 MyApp[390:70b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'An override of -[UINavigationController navigationBar] is returning an object that is not a kind of UINavigationBar'
*** First throw call stack:
(
0 CoreFoundation 0x0244d5e4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x01eee8b6 objc_exception_throw + 44
2 CoreFoundation 0x0244d3bb +[NSException raise:format:] + 139
3 UIKit 0x00af796c -[UINavigationController _confirmBarAccessMethods] + 277
4 UIKit 0x00af7b19 -[UINavigationController initWithNibName:bundle:] + 271
5 MyApp 0x000b8e38 -[CustomUINavigationController initWithNibName:bundle:] + 152
6 UIKit 0x00af7815 -[UINavigationController initWithNavigationBarClass:toolbarClass:] + 52
7 MyApp 0x00002868 -[AppDelegate application:didFinishLaunchingWithOptions:] + 712
8 UIKit 0x009c7355 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 309
9 UIKit 0x009c7b95 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1536
10 UIKit 0x009cc3a8 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 824
11 UIKit 0x009e087c -[UIApplication handleEvent:withNewEvent:] + 3447
12 UIKit 0x009e0de9 -[UIApplication sendEvent:] + 85
13 UIKit 0x009ce025 _UIApplicationHandleEvent + 736
14 GraphicsServices 0x0478b2f6 _PurpleEventCallback + 776
15 GraphicsServices 0x0478ae01 PurpleEventCallback + 46
16 CoreFoundation 0x023c8d65 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53
17 CoreFoundation 0x023c8a9b __CFRunLoopDoSource1 + 523
18 CoreFoundation 0x023f377c __CFRunLoopRun + 2156
19 CoreFoundation 0x023f2ac3 CFRunLoopRunSpecific + 467
20 CoreFoundation 0x023f28db CFRunLoopRunInMode + 123
21 UIKit 0x009cbadd -[UIApplication _run] + 840
22 UIKit 0x009cdd3b UIApplicationMain + 1225
23 MyApp 0x00002567 main + 295
24 MyApp 0x00002435 start + 53
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
Create the navigation controller with initWithNavigationBarClass:toolbarClass: and supply your custom navigation bar class. Then perform any configuration you require on the instance created for you by the nav controller superclass.
I finally resolved the issue. CustomerUINavigationController had an override method for the navigationBar accessor. It was attempting to return a nil value. I removed this and the application compiled and ran with no issues.

Embed a MasterDetail template inside of a tabbar

Okay, so I'm trying to embed my entire applications already created using the MasterDetail template inside of a tab controller.
I get an error because the app delegate places the context on the top view controller or something like that and i'm not sure where to redirect it to.
Now, I have searched it and found this: iOS MasterDetail app inside TabController - where to start?
but this isn't particularly helpful because the solution just gives more errors.
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
MasterViewController *controller = (MasterViewController *)navigationController.topViewController;
controller.managedObjectContext = self.managedObjectContext;
Errorlog:
2013-11-07 07:47:01.217 RoslynCAD[4491:70b] -[UITabBarController topViewController]: unrecognized selector sent to instance 0x9d72fe0
2013-11-07 07:47:01.220 RoslynCAD[4491:70b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITabBarController topViewController]: unrecognized selector sent to instance 0x9d72fe0'
*** First throw call stack:
(
0 CoreFoundation 0x01cf75e4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x01a7a8b6 objc_exception_throw + 44
2 CoreFoundation 0x01d94903 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275
3 CoreFoundation 0x01ce790b ___forwarding___ + 1019
4 CoreFoundation 0x01ce74ee _CF_forwarding_prep_0 + 14
5 RoslynCAD 0x0000b9f6 -[AppDelegate application:didFinishLaunchingWithOptions:] + 278
6 UIKit 0x007e2355 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 309
7 UIKit 0x007e2b95 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1536
8 UIKit 0x007e73a8 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 824
9 UIKit 0x007fb87c -[UIApplication handleEvent:withNewEvent:] + 3447
10 UIKit 0x007fbde9 -[UIApplication sendEvent:] + 85
11 UIKit 0x007e9025 _UIApplicationHandleEvent + 736
12 GraphicsServices 0x0262e2f6 _PurpleEventCallback + 776
13 GraphicsServices 0x0262de01 PurpleEventCallback + 46
14 CoreFoundation 0x01c72d65 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53
15 CoreFoundation 0x01c72a9b __CFRunLoopDoSource1 + 523
16 CoreFoundation 0x01c9d77c __CFRunLoopRun + 2156
17 CoreFoundation 0x01c9cac3 CFRunLoopRunSpecific + 467
18 CoreFoundation 0x01c9c8db CFRunLoopRunInMode + 123
19 UIKit 0x007e6add -[UIApplication _run] + 840
20 UIKit 0x007e8d3b UIApplicationMain + 1225
21 RoslynCAD 0x000147ed main + 141
22 libdyld.dylib 0x0308370d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
and
int main(int argc, char * argv[])
{
#autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
UPDATE:
I have edited my code:
UITabBarController *tabController = (UITabBarController *)self.window.rootViewController;
MasterViewController *controller = (MasterViewController *)[tabController.viewControllers objectAtIndex:0];
controller.managedObjectContext = self.managedObjectContext;
And I get this error now
2013-11-10 00:37:03.455 RoslynCAD[6783:70b] -[UINavigationController setManagedObjectContext:]: unrecognized selector sent to instance 0x9e54c40
(lldb)
The error is clear. You are doing this:
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
MasterViewController *controller = (MasterViewController *)navigationController.topViewController;
The error comes from the second line. The error is telling you that navigationController is actually a UITabBarController, not a UINavigationController.
You want:
UITabBarController *tabController = (UITabBarController *)self.window.rootViewController;
// Get what you need from the tab controller

UIAlertView crashes in iOS7

We had compiled and deployed an app in iOS 6 environment. But, now the app is getting crash in iOS 7 whenever showing an alert.
App simply getting crash in [alertView show];
But, the same app is running perfect in iOS 6.
Code for showing alert
-(void)displayAlertWithMessage:(NSString *)message withTitle:(NSString *)title andTag:(int)tag
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:title message:message delegate:self cancelButtonTitle:#"OK" otherButtonTitles:nil];
[alertView show];
}
and calling like this
[self displayAlertWithMessage:#"Please enter valid username!" withTitle:nil andTag:1];
Here, is the crash log.
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/developer/Library/Application Support/iPhone Simulator/7.0/Applications/A0BCB945-8E4A-4D06-BEE8-240FF45ECF78/MyProject.app> (loaded)' with name '_UIModalItemAppViewController''
*** First throw call stack:
(
0 CoreFoundation 0x003176f4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x027c88b6 objc_exception_throw + 44
2 CoreFoundation 0x003174cb +[NSException raise:format:] + 139
3 UIKit 0x015d1bec -[UINib instantiateWithOwner:options:] + 951
4 UIKit 0x01444f05 -[UIViewController _loadViewFromNibNamed:bundle:] + 280
5 UIKit 0x014456ad -[UIViewController loadView] + 302
6 UIKit 0x014459ae -[UIViewController loadViewIfRequired] + 78
7 UIKit 0x01445eb4 -[UIViewController view] + 35
8 UIKit 0x018dc9da -[_UIModalItemsCoordinator _presentingViewControllerForAlertCompatibilityCreateIfNeeded:] + 248
9 UIKit 0x018dc8dd -[_UIModalItemsCoordinator _presentingViewControllerForAlertCompatibility] + 41
10 UIKit 0x01812801 -[UIAlertView(Private) popupAlertAnimated:animationType:atOffset:] + 382
11 UIKit 0x01812c1d -[UIAlertView(Private) popupAlertAnimated:animationType:] + 56
12 UIKit 0x01817c17 -[UIAlertView showWithAnimationType:] + 48
13 UIKit 0x01817c45 -[UIAlertView show] + 41
14 MyProject 0x000330a8 -[LoginViewController displayAlertWithMessage:withTitle:andTag:] + 232
15 MyProject 0x00032e8b -[LoginViewController isValidContent] + 299
16 MyProject 0x00033136 -[LoginViewController showSetPinView] + 54
17 libobjc.A.dylib 0x027da874 -[NSObject performSelector:withObject:withObject:] + 77
18 UIKit 0x0133524c -[UIApplication sendAction:to:from:forEvent:] + 108
19 UIKit 0x013351d8 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 61
20 UIKit 0x0142ba5d -[UIControl sendAction:to:forEvent:] + 66
21 UIKit 0x0142be20 -[UIControl _sendActionsForEvents:withEvent:] + 577
22 UIKit 0x0142b0cf -[UIControl touchesEnded:withEvent:] + 641
23 UIKit 0x0137221d -[UIWindow _sendTouchesForEvent:] + 852
24 UIKit 0x01372e84 -[UIWindow sendEvent:] + 1232
25 UIKit 0x01346b86 -[UIApplication sendEvent:] + 242
26 MyProject 0x000c2c75 -[Application sendEvent:] + 101
27 UIKit 0x0133135f _UIApplicationHandleEventQueue + 11421
28 CoreFoundation 0x002a096f __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
29 CoreFoundation 0x002a02fb __CFRunLoopDoSources0 + 235
30 CoreFoundation 0x002bd3ce __CFRunLoopRun + 910
31 CoreFoundation 0x002bcbf3 CFRunLoopRunSpecific + 467
32 CoreFoundation 0x002bca0b CFRunLoopRunInMode + 123
33 GraphicsServices 0x036f0a27 GSEventRunModal + 192
34 GraphicsServices 0x036f084e GSEventRun + 104
35 UIKit 0x01333f0b UIApplicationMain + 1225
36 MyProject 0x00006612 main + 178
37 MyProject 0x00006555 start + 53
)
libc++abi.dylib: terminating with uncaught exception of type NSException
Thanks in advance.
As per crash log it says to me "[UIViewController _loadViewFromNibNamed:bundle:]" unable to load nib file.
But, in my project I had created a category for UIViewController class and overridden the -(id)init method. Upto ios6, while showing an alert this category method is not at all executing, but from ios7 onwards overridden init() method of UIViewController.
So, I fixed this issue by adding the another validation in UIViewController category's init() method for checking the class method is UIAlertView or not, if it is UIAlertView then simply calling [super init]; instead of doing my other stuff relating to view controllers.
Sample code:
- (id)init
{
NSString *viewControllerName = [NSString stringWithFormat:#"%#",[self class]];
if([viewControllerName isEqualToString:#"UIAlertView"])
{
self = [super init];
}
else
{
// my stuff
}
return self;
}
you can test it.. try to avoid nil.. instead of that put something... like
[self displayAlertWithMessage:#"Please enter valid username!" withTitle:#"Hello" andTag:1]
and you need to release alert view so in function write release code...

xcode 'NSInvalidArgumentException', reason: '-[cure superview]: unrecognized selector sent to instance 0x4e3b7b0'

i am not sure why i am getting this error
i created a regular tab bar application
made 5 tabs (compiles and runs)
then put a tableview in one of the tabs , put the code below and i get this error
cure.h
#import <UIKit/UIKit.h>
#interface cure : UIViewController
<UITableViewDataSource, UITableViewDelegate>
{
NSArray *exercises;
}
#end
cure.m
#import "cure.h"
#implementation cure
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 1;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:#"cell"];
// create a cell
if ( cell == nil) {
cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:#"cell"];
}
// set the main text
cell.textLabel.text = [exercises objectAtIndex:indexPath.row];
// return the cell.
return cell;
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
exercises = [[NSArray alloc]
initWithObjects:#"An Interesting Title",
#"A Not That Interesting Title",
#"And Still Another Title", nil];
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[super dealloc];
}
#end
in mainwindows.xib
i have the right tab class name "cure"
error
2011-04-29 22:22:06.446 week 3 week clear [4950:40b] -[cure superview]: unrecognized selector sent to instance 0x4e3b7b0
2011-04-29 22:22:06.451 peek 3 week clear [4950:40b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[cure superview]: unrecognized selector sent to instance 0x4e3b7b0'
*** Call stack at first throw:
(
0 CoreFoundation 0x00dc15a9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x00f15313 objc_exception_throw + 44
2 CoreFoundation 0x00dc30bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3 CoreFoundation 0x00d32966 ___forwarding___ + 966
4 CoreFoundation 0x00d32522 _CF_forwarding_prep_0 + 50
5 UIKit 0x002e2365 -[UIView(Internal) _addSubview:positioned:relativeTo:] + 77
6 UIKit 0x002e0aa3 -[UIView(Hierarchy) addSubview:] + 57
7 UIKit 0x002e87c1 -[UIView initWithCoder:] + 840
8 Foundation 0x00017c24 _decodeObjectBinary + 3296
9 Foundation 0x00016d91 _decodeObject + 224
10 UIKit 0x004ac979 -[UIRuntimeConnection initWithCoder:] + 212
11 Foundation 0x00017c24 _decodeObjectBinary + 3296
12 Foundation 0x000189f5 -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:] + 1354
13 Foundation 0x00019024 -[NSArray(NSArray) initWithCoder:] + 596
14 Foundation 0x00017c24 _decodeObjectBinary + 3296
15 Foundation 0x00016d91 _decodeObject + 224
16 UIKit 0x004abc36 -[UINib instantiateWithOwner:options:] + 804
17 UIKit 0x004adab7 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 168
18 UIKit 0x00363628 -[UIViewController _loadViewFromNibNamed:bundle:] + 70
19 UIKit 0x00361134 -[UIViewController loadView] + 120
20 UIKit 0x0036100e -[UIViewController view] + 56
21 UIKit 0x00373f54 -[UITabBarController transitionFromViewController:toViewController:transition:shouldSetSelected:] + 120
22 UIKit 0x00372aaa -[UITabBarController transitionFromViewController:toViewController:] + 64
23 UIKit 0x003748a2 -[UITabBarController _setSelectedViewController:] + 263
24 UIKit 0x00374711 -[UITabBarController _tabBarItemClicked:] + 352
25 UIKit 0x002b14fd -[UIApplication sendAction:to:from:forEvent:] + 119
26 UIKit 0x004b3ce6 -[UITabBar _sendAction:withEvent:] + 422
27 UIKit 0x002b14fd -[UIApplication sendAction:to:from:forEvent:] + 119
28 UIKit 0x00341799 -[UIControl sendAction:to:forEvent:] + 67
29 UIKit 0x00343c2b -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
30 UIKit 0x00341750 -[UIControl sendActionsForControlEvents:] + 49
31 UIKit 0x002b14fd -[UIApplication sendAction:to:from:forEvent:] + 119
32 UIKit 0x00341799 -[UIControl sendAction:to:forEvent:] + 67
33 UIKit 0x00343c2b -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
34 UIKit 0x003427d8 -[UIControl touchesEnded:withEvent:] + 458
35 UIKit 0x002d5ded -[UIWindow _sendTouchesForEvent:] + 567
36 UIKit 0x002b6c37 -[UIApplication sendEvent:] + 447
37 UIKit 0x002bbf2e _UIApplicationHandleEvent + 7576
38 GraphicsServices 0x01719992 PurpleEventCallback + 1550
39 CoreFoundation 0x00da2944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
40 CoreFoundation 0x00d02cf7 __CFRunLoopDoSource1 + 215
41 CoreFoundation 0x00cfff83 __CFRunLoopRun + 979
42 CoreFoundation 0x00cff840 CFRunLoopRunSpecific + 208
43 CoreFoundation 0x00cff761 CFRunLoopRunInMode + 97
44 GraphicsServices 0x017181c4 GSEventRunModal + 217
45 GraphicsServices 0x01718289 GSEventRun + 115
46 UIKit 0x002bfc93 UIApplicationMain + 1160
47 peek 3 week clear 0x00002658 main + 102
48 peek 3 week clear 0x000025e9 start + 53
)
terminate called after throwing an instance of 'NSException'
Program received signal: “SIGABRT”.
what am i doing wrong?
thank you
You have probably assigned the "cure" class to a UIView in the "Identity" tab in Interface Builder. "cure" is a view controller, so it doesn't implement any UIView methods (such as -superview), and thus throws an exception when trying to load the nib.
Btw, you have a whole bunch of leaks in your code, please read something about memory management in Objective-C (perhaps also about Cocoa naming conventions).