animated circle on map with iOS 7 - ios7

I am using YHAnimatedCircleView (http://yickhong-ios.blogspot.it/2012/04/animated-circle-on-mkmapview.html) to display an animated circle on a map. It works well with iOS6, while I am experiencing some problems with iOS7.
The circle appears after a long period on the map and it returns me the following error:
CoreAnimation: warning, deleted thread with uncommitted CATransaction;
0 QuartzCore 0x00fcfa96 _ZN2CA11Transaction4pushEv + 374
1 QuartzCore 0x00fcfe72 _ZN2CA11Transaction15ensure_implicitEv + 316
2 QuartzCore 0x0106791b _ZN2CA5Layer12begin_changeEPNS_11TransactionEjRP11objc_object + 37
3 QuartzCore 0x0106914e _ZN2CA5Layer12set_positionERKNS_4Vec2IdEEb + 290
4 QuartzCore 0x010692a9 -[CALayer setPosition:] + 68
5 QuartzCore 0x010699af -[CALayer setFrame:] + 799
6 UIKit 0x0126329c -[UIView(Geometry) setFrame:] + 302
7 UIKit 0x01361d50 -[UIImageView _setViewGeometry:forMetric:] + 210
8 UIKit 0x01361fae -[UIImageView setFrame:] + 63
9 SampleApp 0x0001d331 -[YHAnimatedCircleView drawMapRect:zoomScale:inContext:] + 1329
10 MapKit 0x00c1b8ff __43-[MKOverlayView overlay:drawKey:inContext:]_block_invoke + 847
11 MapKit 0x00c1b572 -[MKOverlayView overlay:drawKey:inContext:] + 268
12 VectorKit 0x0bff941d -[VKRasterOverlay drawKey:inContext:] + 61
13 VectorKit 0x0bff75e5 __40-[VKRasterOverlayTileSource _queueDraw:]_block_invoke + 485
14 libdispatch.dylib 0x0647d818 _dispatch_call_block_and_release + 15
15 libdispatch.dylib 0x064924b0 _dispatch_client_callout + 14

I dont know exactly what your Framework is doing but the drawing of layers shouldn't be done in the main thread. So like in this thread discussed and solved, you should just use an async-dispatcher.
dispatch_async(dispatch_get_main_queue(), ^{
[_mapView addOverlay:circle];
});

Here is an example that updated the YickHong solution for iOS7.
https://github.com/jhurray/iOS7AnimatedMapOverlay
In iOS7, you can no longer add subviews to an MKOverlay. Check out the code here and ping me if you have any questions jeff#energ.io.

Related

Updating ObjC app on XCode 9

I recently updated our ObjC app on XCode 9. Everything was ok (I even updated to iPhone X new layout), there has been just an issue in one of the viewControllers (built in IB). This viewController, which shows a tableView with news, can be accessed from 2 sources:
From appDelegate if a Push Notification informs about new news. In this case, a right navBarButton is unhidden so the user can dismiss the view
From a specific section, where a normal back button is used
When I try to open the viewController from the second case, the app crashes with the next message:
2017-10-17 12:53:26.747396-0500 verifica[17299:1270771] * Assertion failure in -[_UIButtonBarButtonVisualProviderIOS _addConstraintsForBackgroundImageWithOffset:isBackButton:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3694.4.18/_UIButtonBarButtonVisualProviderIOS.m:485
2017-10-17 12:53:26.855489-0500 verifica[17299:1270771] * Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '_UIButtonBarButtonVisualProviderIOS cannot have a background without any content'
*** First throw call stack:
(
0 CoreFoundation 0x000000010ba151cb exceptionPreprocess + 171
1 libobjc.A.dylib 0x000000010af48f41 objc_exception_throw + 48
2 CoreFoundation 0x000000010ba1a362 +[NSException raise:format:arguments:] + 98
3 Foundation 0x0000000106a22089 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 193
4 UIKit 0x000000010860cd92 -[_UIButtonBarButtonVisualProviderIOS _addConstraintsForBackgroundImageWithOffset:isBackButton:] + 1079
5 UIKit 0x000000010860c903 -[_UIButtonBarButtonVisualProviderIOS _configureBackgroundForButton:fromBarButtonItem:isBackButton:] + 1060
6 UIKit 0x0000000108610610 -[_UIButtonBarButtonVisualProviderIOS configureButton:fromBarButtonItem:] + 2630
7 UIKit 0x000000010860dcaf -[_UIButtonBarButtonVisualProviderIOS configureButton:withAppearanceDelegate:fromBarItem:] + 148
8 UIKit 0x0000000107ff3096 -[_UIButtonBarButton _configureFromBarItem:appearanceDelegate:isBackButton:] + 86
9 UIKit 0x0000000107ff2c20 -[_UIButtonBarButton configureFromBarItem:withAppearanceDelegate:] + 53
10 UIKit 0x00000001085a2049 -[_UIButtonBar _updatedViewForBarButtonItem:withView:] + 338
11 UIKit 0x00000001085a0add __32-[_UIButtonBar _newGroupLayout:]_block_invoke + 82
12 UIKit 0x00000001085960d3 -[_UIButtonBarItemLayout _updateItemView] + 53
13 UIKit 0x000000010859667c -[_UIButtonBarItemLayout _configure] + 40
14 UIKit 0x000000010859518f -[_UIButtonBarLayout configure] + 60
15 UIKit 0x00000001085952d9 -[_UIButtonBarLayout addLayoutViews:] + 49
16 UIKit 0x000000010859864e -[_UIButtonBarItemGroupLayout _iterateConfiguredLayouts:] + 228
17 UIKit 0x000000010859872f -[_UIButtonBarItemGroupLayout _addLayoutViews:] + 116
18 UIKit 0x000000010859523d -[_UIButtonBarLayout addLayoutViews:layoutGuides:constraintsToActivate:constraintsToDeactivate:] + 111
19 UIKit 0x00000001085a1264 -[_UIButtonBar _layoutBar] + 1833
20 UIKit 0x00000001085a3b44 -[_UIButtonBarStackView updateConstraints] + 48
21 UIKit 0x000000010870d8b6 -[UIView(AdditionalLayoutSupport) _sendUpdateConstraintsIfNecessaryForSecondPass:] + 161
22 UIKit 0x000000010870ded2 -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededCollectingViews:forSecondPass:] + 1296
23 UIKit 0x000000010870dd51 -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededCollectingViews:forSecondPass:] + 911
24 Foundation 0x00000001069acde1 -[NSISEngine withBehaviors:performModifications:] + 131
25 UIKit 0x000000010870e703 __100-[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededWithViewForVariableChangeNotifications:]_block_invoke + 90
26 UIKit 0x000000010870cf61 -[UIView(AdditionalLayoutSupport) _withUnsatisfiableConstraintsLoggingSuspendedIfEngineDelegateExists:] + 104
27 UIKit 0x000000010870e272 -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededWithViewForVariableChangeNotifications:] + 160
28 UIKit 0x000000010870f38c -[UIView(AdditionalLayoutSupport) _updateConstraintsAtEngineLevelIfNeededWithViewForVariableChangeNotifications:] + 401
29 UIKit 0x0000000107c671b6 -[UIView(Hierarchy) layoutBelowIfNeeded] + 1517
30 UIKit 0x00000001084a74cd -[_UINavigationBarTransitionContextPush _prepareContentView] + 130
31 UIKit 0x00000001084a8b2b -[_UINavigationBarTransitionContextPush prepare] + 133
32 UIKit 0x000000010878d15a -[_UINavigationBarVisualProviderModernIOS _performAnimationWithTransitionCompletion:transition:] + 740
33 UIKit 0x0000000107cb60b6 -[UINavigationBar _pushNavigationItem:transitionAssistant:] + 359
34 UIKit 0x0000000107cb58e2 -[UINavigationBar _pushNavigationItemUsingCurrentTransition:] + 368
35 UIKit 0x0000000107cb5a47 -[UINavigationBar pushNavigationItem:animated:] + 179
36 UIKit 0x0000000107cb02cf -[UINavigationBar _performUpdatesIgnoringLock:] + 47
37 UIKit 0x0000000107cb5b51 -[UINavigationBar _pushNavigationItem:transition:] + 152
38 UIKit 0x0000000107d97f37 __71-[UINavigationController pushViewController:transition:forceImmediate:]_block_invoke + 371
39 UIKit 0x0000000107d9812c __71-[UINavigationController pushViewController:transition:forceImmediate:]_block_invoke.1981 + 114
40 UIKit 0x0000000107d92bcf __98-[UINavigationController _shouldSkipHostedRefreshControlUpdateSchedulingDeferredUpdateIfNecessary]_block_invoke + 18
41 UIKit 0x0000000107d94b25 -[UINavigationController _startDeferredTransitionIfNeeded:] + 1343
42 UIKit 0x0000000107d95b90 -[UINavigationController __viewWillLayoutSubviews] + 115
43 UIKit 0x0000000107fec2ae -[UILayoutContainerView layoutSubviews] + 231
44 UIKit 0x0000000128bc4a9f -[UILayoutContainerViewAccessibility layoutSubviews] + 42
45 UIKit 0x0000000107c7c551 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1331
46 QuartzCore 0x000000010773a4ba -[CALayer layoutSublayers] + 153
47 QuartzCore 0x000000010773e5a9 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 401
48 QuartzCore 0x00000001076c71cd _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 365
49 QuartzCore 0x00000001076f2ae4 _ZN2CA11Transaction6commitEv + 500
50 UIKit 0x0000000107bd8687 _afterCACommitHandler + 272
51 CoreFoundation 0x000000010b9b7db7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION + 23
52 CoreFoundation 0x000000010b9b7d0e __CFRunLoopDoObservers + 430
53 CoreFoundation 0x000000010b99c324 __CFRunLoopRun + 1572
54 CoreFoundation 0x000000010b99ba89 CFRunLoopRunSpecific + 409
55 GraphicsServices 0x000000010f3fd9c6 GSEventRunModal + 62
56 UIKit 0x0000000107badd30 UIApplicationMain + 159
57 verifica 0x0000000103ce9f0f main + 111
58 libdyld.dylib 0x000000010ac32d81 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
The app worked fine before XCode 9. I've run it in the simulator (with iOS, 10.3, 10.3.1 & 11) and on an iPhone with iOS 11, and crashes all the time for case 2.
I've searched several of the terms referred in the console, but the only similar was http://www.cocoachina.com/bbs/read.php?tid-1726269.html, I used Google Translate and one guy says: "mainly due to the navigantionBarItem picture and the location of the text caused by the offset".
As I said the view was built in IB with a normal Navigation Controller, no offset in the button. The only difference with other similar viewControllers that work fine is the right navBarButton that is shown in case 1 but not in case 2 with the next code in viewDidLoad:
if (self.fromAppDelegate) {
self.doneButton.title = #"Cerrar";
self.doneButton.enabled = YES;
} else self.doneButton.enabled = NO;
I'm sure its gonna be an easy solution but right now I can't find it. I hope someone can help me.
Update
These are this button's configuration in IB:
InterfaceBuilder: Button
OK, when I was checking the configuration for the button in IB, I noticed that its width (Size Inspector) was zero. I changed it to 80 so, the button shows now in the preview. I also, in Attributes Inspector, changed it from Custom system item to Done and in code added the next line for the else statement:
self.doneButton.title = #"";
It worked, the app didn't crash anymore, but the button, if not enabled, was visible as Done all the time which is not what I want (the code above didn't work because it was set as System Button, duh). So, I change it back to Custom and delete the default title aaaand... everything was as before (check image in the question), but the app still works. What? Well, not everything was as before: the code above was the only change. If I commented the line, the app crashes again.
I don't know if it's a bug or a new requirement, but I hope it useful for someone (I knew the answer was gonna be easy).

EXC_BAD_ACCESS KERN_INVALID_ADDRESS at SFApplication sendEvent

Getting this error intermittently in production. Fails on objMsgSend for isKindOfClass. Having difficulty reproducing in development, would like to be able to do so. Have tried showing and dismissing the UIAlertController with other view controllers on the screen, moving to and from background etc. EDIT: Have now been able to reproduce this. Occurs when the UIAlertController appears with (shows underneath) an existing popover in the app. EDIT2: Appears to be an issue on iOS8, but less frequent although still occurring in iOS9
Thread : Crashed: com.apple.main-thread 0 libobjc.A.dylib
0x0000000194d8bbd0 objc_msgSend + 16 1 UIKit
0x0000000188a2d384 -[UIWindow setDelegate:] + 132 2 UIKit
0x0000000188cb5cd4 -[UIPresentationController
runTransitionForCurrentState] + 592 3 UIKit
0x0000000188cd1cd8 -[UIViewController
_dismissViewControllerWithAnimationController:interactionController:completion:]
+ 672 4 UIKit 0x0000000188ae0258 -[UIViewController _dismissViewControllerWithTransition:from:completion:] + 852 5 UIKit 0x0000000188a8875c -[UIViewController
dismissViewControllerWithTransition:completion:] + 952 6 UIKit
0x0000000188a88344 -[UIViewController
dismissViewControllerAnimated:completion:] + 252 7 UIKit
0x0000000188d84d7c -[UIAlertController
_dismissAnimated:triggeringAction:triggeredByPopoverDimmingView:] + 420 8 UIKit 0x00000001889ac750
_UIGestureRecognizerUpdate + 8536 9 UIKit 0x00000001889e68dc -[UIWindow _sendGesturesForEvent:] + 1044 10 UIKit
0x00000001889e5f7c -[UIWindow sendEvent:] + 660 11 UIKit
0x00000001889b968c -[UIApplication sendEvent:] + 264 12 iPath
0x000000010023c3cc -[SFApplication sendEvent:] (SFApplication.m:72) 13
UIKit 0x0000000188c5860c
_UIApplicationHandleEventFromQueueEvent + 14992 14 UIKit 0x00000001889b7bf4 _UIApplicationHandleEventQueue + 1616 15
CoreFoundation 0x00000001841c29ec
CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 24 16 CoreFoundation 0x00000001841c1c90
__CFRunLoopDoSources0 + 264 17 CoreFoundation 0x00000001841bfd40 __CFRunLoopRun + 712 18 CoreFoundation
0x00000001840ed0a4 CFRunLoopRunSpecific + 396 19 GraphicsServices
0x000000018d25b5a4 GSEventRunModal + 168 20 UIKit
0x0000000188a1eaa4 UIApplicationMain + 1488 21 iPath
0x00000001000ca308 main (main.m:33) 22 libdyld.dylib
0x00000001953e6a08 start + 4

Assertion failure in [CustomNavigationController popToViewController:transition:]

I want to pop view controllers until the desired view controller is at the top of the navigation stack.
I'm doing it this way:
UIViewController *aViewController = [self.navigationController.viewControllers objectAtIndex:lViewControllerIndex];
[self.navigationController popToViewController:aViewController
animated:YES];
From the debugger I can see that aViewController is <MainViewController: 0x79ea3b10>
and self.navigationController.viewControllers is
<MainViewController: 0x79ea3b10>,
<FirstViewController: 0x79eb2630>,
<SecondViewController: 0x7b258f10>
Currently I'm in SecondViewController and I want to go back to MainViewController
But it crashes, the crash message is the following:
***** Assertion failure in -[CustomNavigationController popToViewController:transition:], /SourceCache/UIKit_Sim/UIKit-2935.137/UINavigationController.m:4912**
How can I correctly go back by popping multiple view controller ?
UPDATED [1]:
I was not clear, I don't need a way how to pop to root view controller, I need a way how to pop multiple view controllers. Above, it was only an example going from SecondViewController to MainViewController
UPDATED [2]:
Stack trace:
0 CoreFoundation 0x030a81e4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x02e218e5 objc_exception_throw + 44
2 CoreFoundation 0x030a8048 +[NSException raise:format:arguments:] + 136
3 Foundation 0x00c7d4de -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 116
4 UIKit 0x01a45ab8 -[UINavigationController popToViewController:transition:] + 918
5 UIKit 0x01a4571d -[UINavigationController popToViewController:animated:] + 56
6 Isi For You 0x000a14b7 -[DetailViewController breadcrumbItemPressedAtIndex:] + 327
7 Isi For You 0x000c4460 -[ListHeaderViewController breadcrumbView:didTapItemAtIndex:] + 144
8 Isi For You 0x00094772 -[BTBreadcrumbView didTapItemAtIndex:] + 162
9 Isi For You 0x0009480f -[BTBreadcrumbView tapItemButton:] + 143
10 libobjc.A.dylib 0x02e33880 -[NSObject performSelector:withObject:withObject:] + 77
11 UIKit 0x018fe3b9 -[UIApplication sendAction:to:from:forEvent:] + 108
12 UIKit 0x018fe345 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 61
13 UIKit 0x019ffbd1 -[UIControl sendAction:to:forEvent:] + 66
14 UIKit 0x019fffc6 -[UIControl _sendActionsForEvents:withEvent:] + 577
15 UIKit 0x019ff243 -[UIControl touchesEnded:withEvent:] + 641
16 UIKit 0x0193dddd -[UIWindow _sendTouchesForEvent:] + 852
17 UIKit 0x0193e9d1 -[UIWindow sendEvent:] + 1117
18 UIKit 0x019105f2 -[UIApplication sendEvent:] + 242
19 Isi For You 0x00434244 -[CustomUIApplication sendEvent:] + 100
20 UIKit 0x018fa353 _UIApplicationHandleEventQueue + 11455
21 CoreFoundation 0x0303177f __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
22 CoreFoundation 0x0303110b __CFRunLoopDoSources0 + 235
23 CoreFoundation 0x0304e1ae __CFRunLoopRun + 910
24 CoreFoundation 0x0304d9d3 CFRunLoopRunSpecific + 467
25 CoreFoundation 0x0304d7eb CFRunLoopRunInMode + 123
26 GraphicsServices 0x042cc5ee GSEventRunModal + 192
27 GraphicsServices 0x042cc42b GSEventRun + 104
28 UIKit 0x018fcf9b UIApplicationMain + 1225
29 Isi For You 0x000449e2 main + 82
30 libdyld.dylib 0x038796d9 start + 1
)
That error usually occurs when the View Controller you are trying to pop to is not in the navigation stack. Although in your case it would seem that you view controller is in fact there... You can use popToRootViewControllerAnimated: to pop to your "root".
[self.navigationController popToRootViewControllerAnimated:YES];
If you try to pop without animation it will work. I faced this issue when tried to pop multiple view controllers animated.
If you want to pop n viewControllers till n-1 pop without animation, then pop the last one with animation.
You can use the
- (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated
API on UINavigationController to hop between multiple stack position jumps or indeed completely replace the stack.
from the docs
The view controllers to place in the stack. The front-to-back order of
the controllers in this array represents the new bottom-to-top order
of the controllers in the navigation stack. Thus, the last item added
to the array becomes the top item of the navigation stack.
so recover your current stack with the viewControllers property , mutate as desired (in your case you would be taking a sub-array of the original stack) then dump it back onto the navigation controller.

NSUndoManager is in invalid state

Working through the book Cocoa Programming for Mac OS X (third edition) from Aaron Hillegass I am now at Chapter 9, at the end of section Adding Undo to RaiseMan. Hillegass tells you to add two methods to your class MyDocument and then build the app to see that undo/redo is added and working.
But, it isn't working (why else would I be here?). It says:
2012-11-27 19:55:16.231 RaiseMan[293:a0f] HIToolbox: ignoring exception 'undo: NSUndoManager 0x100188a30 is in invalid state, undo was called with too many nested undo groups' that raised inside Carbon event dispatch
(
0 CoreFoundation 0x00007fff88c26784 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x00007fff858ddf03 objc_exception_throw + 45
2 CoreFoundation 0x00007fff88c265a7 +[NSException raise:format:arguments:] + 103
3 CoreFoundation 0x00007fff88c26534 +[NSException raise:format:] + 148
4 Foundation 0x00007fff86fd0e17 -[NSUndoManager undo] + 239
5 AppKit 0x00007fff8976eeda -[NSApplication sendAction:to:from:] + 95
6 AppKit 0x00007fff8979346a -[NSMenuItem _corePerformAction] + 365
7 AppKit 0x00007fff897931d4 -[NSCarbonMenuImpl performActionWithHighlightingForItemAtIndex:] + 121
8 AppKit 0x00007fff89a18cf4 -[NSMenu _internalPerformActionForItemAtIndex:] + 35
9 AppKit 0x00007fff898ca9e9 -[NSCarbonMenuImpl _carbonCommandProcessEvent:handlerCallRef:] + 136
10 AppKit 0x00007fff8977599c NSSLMMenuEventHandler + 321
11 HIToolbox 0x00007fff83d937f7 _ZL23DispatchEventToHandlersP14EventTargetRecP14OpaqueEventRefP14HandlerCallRec + 1002
12 HIToolbox 0x00007fff83d92d46 _ZL30SendEventToEventTargetInternalP14OpaqueEventRefP20OpaqueEventTargetRefP14HandlerCallRec + 395
13 HIToolbox 0x00007fff83db0a81 SendEventToEventTarget + 45
14 HIToolbox 0x00007fff83ddfc35 _ZL18SendHICommandEventjPK9HICommandjjhPKvP20OpaqueEventTargetRefS5_PP14OpaqueEventRef + 387
15 HIToolbox 0x00007fff83e0ca0a SendMenuCommandWithContextAndModifiers + 56
16 HIToolbox 0x00007fff83e0c9c2 SendMenuItemSelectedEvent + 101
17 HIToolbox 0x00007fff83e0c8d2 _ZL19FinishMenuSelectionP13SelectionDataP10MenuResultS2_ + 150
18 HIToolbox 0x00007fff83dedc27 _ZL14MenuSelectCoreP8MenuData5PointdjPP13OpaqueMenuRefPt + 467
19 HIToolbox 0x00007fff83ded37c _HandleMenuSelection2 + 453
20 AppKit 0x00007fff89646851 _NSHandleCarbonMenuEvent + 236
21 AppKit 0x00007fff8961a362 _DPSNextEvent + 1908
22 AppKit 0x00007fff89619801 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 155
23 AppKit 0x00007fff895df68f -[NSApplication run] + 395
24 AppKit 0x00007fff895d83b0 NSApplicationMain + 364
25 RaiseMan 0x000000010000160a main + 33
26 RaiseMan 0x0000000100001218 start + 52
27 ??? 0x0000000000000001 0x0 + 1
)
in the console when I click undo or press cmd+z.
I found solutions for this online, but they are all about 'UndoGroups' or something similar.
I know that the exception is about nested undo groups, but I don't use them (AFAIK), I don't even know what they are.
I don't know what else information I should give, so please ask in the comments for code fragments etc.
For future readers:
Hillegass tells you to add 2 methods: -insertObject:inEmployeesAtIndex: and -removeObjectFromEmployeesAtIndex:. In the second method you have to do:
NSUndoManager *undo = [self undoManager];
[[undo prepareWithInvocationTarget:self] insertObject:p inEmployeesAtIndex:index];
But I did:
NSUndoManager *undo = [self undoManager];
[[undo prepareWithInvocationTarget:self] insertObject:p atIndex:index]; //atIndex: instead of inEmployeesAtIndex:

Weird problems with program and debugger in xcode

Okay, I have a program that I'm trying to test on my iPad. I have it all set up so that the app is able to get on the iPad just fine, but running it on the iPad is a different story.
Now, the thing is, my program was working fine on the debug configuration, but now it won't work on that, either. It's strange, because before I was able to get to a certain part of the program before it crashed, but now it's crashing before that.
The debugger is hardly helping. When I use the debugger window, it will step into one line of code, and then suddenly jump back to another line of code.
I really don't understand what's going on. The crash is now occuring in a root view controller that I have set up, called 'FunctionMachineViewController. Here's the code for when it crashes:
-(IBAction)startOnePlayer:(id)sender
{
GameViewController* GameView = [[GameViewController alloc] initWithNibName:nil bundle:nil];
[GameView isOnePlayer:YES withLevel:startLevelNumber];
[self presentModalViewController:GameView animated:YES];
}
GameViewController is supposed to initialize just fine, but the debugger shows it as uninitialized. I even tried setting it up in the header file instead, but the problem still happens. Has anyone else come across these problems? Any help would be greatly appreciated!
EDIT: Here's what the console says when it crashes:
[Session started at 2011-06-02 21:46:10 -0700.]
2011-06-02 21:46:13.309 FunctionMachine[5033:207] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<GameViewController 0x4b2a890> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key Yminus2.'
*** Call stack at first throw:
(
0 CoreFoundation 0x00dd55a9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x00f29313 objc_exception_throw + 44
2 CoreFoundation 0x00dd54e1 -[NSException raise] + 17
3 Foundation 0x0003d677 _NSSetUsingKeyValueSetter + 135
4 Foundation 0x0003d5e5 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 285
5 UIKit 0x004c130c -[UIRuntimeOutletConnection connect] + 112
6 CoreFoundation 0x00d4b8cf -[NSArray makeObjectsPerformSelector:] + 239
7 UIKit 0x004bfd23 -[UINib instantiateWithOwner:options:] + 1041
8 UIKit 0x004c1ab7 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 168
9 UIKit 0x00377628 -[UIViewController _loadViewFromNibNamed:bundle:] + 70
10 UIKit 0x00375134 -[UIViewController loadView] + 120
11 UIKit 0x0037500e -[UIViewController view] + 56
12 UIKit 0x00376a3d -[UIViewController viewControllerForRotation] + 63
13 UIKit 0x00372988 -[UIViewController _visibleView] + 90
14 UIKit 0x0061493c -[UIClientRotationContext initWithClient:toOrientation:duration:andWindow:] + 354
15 UIKit 0x002ec81e -[UIWindow _setRotatableClient:toOrientation:updateStatusBar:duration:force:] + 954
16 UIKit 0x00574619 -[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:] + 1381
17 UIKit 0x0037965d -[UIViewController presentModalViewController:withTransition:] + 3478
18 FunctionMachine 0x00001fdd -[FunctionMachineViewController startOnePlayer:] + 227
19 UIKit 0x002c54fd -[UIApplication sendAction:to:from:forEvent:] + 119
20 UIKit 0x00355799 -[UIControl sendAction:to:forEvent:] + 67
21 UIKit 0x00357c2b -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
22 UIKit 0x00356a1c -[UIControl touchesBegan:withEvent:] + 277
23 UIKit 0x002e9d41 -[UIWindow _sendTouchesForEvent:] + 395
24 UIKit 0x002cac37 -[UIApplication sendEvent:] + 447
25 UIKit 0x002cff2e _UIApplicationHandleEvent + 7576
26 GraphicsServices 0x0172d992 PurpleEventCallback + 1550
27 CoreFoundation 0x00db6944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
28 CoreFoundation 0x00d16cf7 __CFRunLoopDoSource1 + 215
29 CoreFoundation 0x00d13f83 __CFRunLoopRun + 979
30 CoreFoundation 0x00d13840 CFRunLoopRunSpecific + 208
31 CoreFoundation 0x00d13761 CFRunLoopRunInMode + 97
32 GraphicsServices 0x0172c1c4 GSEventRunModal + 217
33 GraphicsServices 0x0172c289 GSEventRun + 115
34 UIKit 0x002d3c93 UIApplicationMain + 1160
35 FunctionMachine 0x00001c64 main + 102
36 FunctionMachine 0x00001bf5 start + 53
37 ??? 0x00000001 0x0 + 1
)
terminate called after throwing an instance of 'NSException'
Turns out that, when I went and changed the name of several UILabels in the header of GameViewController, I forgot to fix the names in the interface builder, too. Don't know if that was what was causing the debugger to act weird, but everything is working now!