_hideForKeyboardAppearance error when clicking on UITextView - ios

I have a UITextView, and whenever I click on it, the app crashes with the following error:
-[__NSSetM _hideForKeyboardAppearance]: unrecognized selector sent to instance 0x7fb8aa76cd60
If I run the app multiple times, it always crashes at the same place, but the intercepting object that is throwing the "unrecoginzed selector" can be different. Sometimes it is UIImage instead of NSSetM, sometimes, it is a UIConstraint, etc.
Even if I don't assign the UITextView to a specific outlet in my class, or have it assigned to a delegate, I get the same behavior. This happens on both simulator and hardware.
Any ideas what is going on?
p.s. this is iOS 8. Crash happens on both iPhone and iPad.
Edit: Note that this happens even though the UITextView calls no code. I removed any outlet connections in the storyboard, and even made it so my class doesn't implement UITextViewDelegate. Still crashes. That is why I am so puzzled and wondered if anyone has ever encountered something like this. One thing to note is that the view controller having this issue is buried several screens deep within a UISplitViewController. Not sure if someone UI elements buried deep in the nav stack are somehow intercepting the keyboard call?

Related

iOS 10 UIKit Zombie Crash, Worked Fine in iOS 7-9

We've got an app that's fairly large now, and we recently upgraded to iOS 10. In doing so, a new bug was introduced, and we're at a loss for how to solve it.
The crash itself occurs during a call to layoutIfNeeded(). However, the crash does not occur unless the layoutIfNeeded() call is contained inside a UIView.animateWithDuration() block. No amount of weak referencing, delays, or dispatch calls seems to have any effect. The same crash can be triggered during a call to [super viewWillTransitionToSizeWithTransitionCoordinator].
"An Objective-C message was sent to a deallocated 'Bubble' object (zombie) at address: 0x10924f030."
Enabling Zombies shows that we have a Release call going to one of our UIView subclasses, which we've named Bubble. Nothing too special there, some layout constraints and a gesture recognizer.
The Instruments app hasn't helped much, nor has the new visual memory debugger in Xcode 8 (though it is awesome, surprisingly little documentation on the feature).
I've included a screenshot of Zombies during the crash here. While I know the retain count can be misleading, there are certainly some confusing points to the trace, and we could really use some help diagnosing this.
Again, this code worked fine before iOS 10. We've been unable to find any notes from Apple about underlying changes to UIKit that may have had an effect.
Some more brief info: [Bubble cleanBubbles] simply iterates over the subviews of any view passed in, and removes the subview if its a Bubble class.
Apologies on certain violations of naming conventions, I'm sure there's plenty to criticize!
Thanks

Weird crash while navigating back

My app crashes randomly when navigating back in a NavigationController. Here is what I know:
It happens randomly (sometimes, I can come back once or twice and if I reload the viewController and press "back" again it will crash)
It happens even with an empty ViewController (I tried to comment out all my code in ViewController.h and .m and to remove all the outlets links)
Nothing shows up in the debug console, only a EXEC_BAD_ACCESS is shown in main.m
I spent the afternoon on this and tried everything.
I don't include code right now because I have no idea where to look. As I said, it even happens with an empty ViewController.
Any thoughts or similar experience ?
EDIT:
Yes I tried to add an exception breakpoint
I even tried to find some observer issues with Spark debugger.
EDIT 2:
Actually, the ViewControllers were not that empty. The import on an UIView category was the problem. Check my answer below.
It's difficult to say exactly what could be causing it without more information, but in my experience the most common reason for an EXC_BAD_ACCESS is when someone tries to call a selector on a deallocated instance. This issue can be a lot easier to debug if you enable zombie objects.
Edit Scheme -> Diagnostics -> Enable Zombie Objects
Now instead of getting a bad access exception you should get a more helpful "message sent to deallocated instance" error (assuming that's actually the problem), along with what method was being called on which class of object.
The problem was that some of my views were importing a custom UIView category that included a dealloc method. I deleted the dealloc method from the category and everything is fine now.

drawWithRect crashing with an exception breakpoint on iOS 8 (Does not crash without exception breakpoint)

Happy iPhone Day everyone! I hope everyone managed to get their hands on one.
I have a strange issue. In my code, I have a UITableView and if the user selects the Email icon in the UINavigationBar, it does two things:
1) Opens up the MFMailComposer
2) Creates a PDF in the background of the contents of the UITableView and attaches it to the email
This has so far been working very well in iOS 7. With iOS 8, if I set an exception breakpoint in my code and run it on an iOS 8 device, it will crash when I click the email icon (iPhone 5s), pointing to the code below:
[strheader drawWithRect:CGRectMake(65, -670, 1024, 100) options:NSStringDrawingUsesLineFragmentOrigin attributes:#{NSFontAttributeName:headerFont} context:nil];
It doesn't let me jump in or out of this breakpoint or do anything to find out what's going on. If I remove the Exception breakpoint, there's no crash. If I run the app on my device and disconnect the device from Xcode, run it again, there's no crash.
So ultimately, there's no crash when running my app, but it makes me extremely nervous that with an exception breakpoint, it crashes at that code above which means something isn't right somewhere.
There are no warnings in my code. The method that does the saving of the PDF to the email (which contains that code) is extremely long; if it's required, I'll paste it here but I don't want to make this question longer than it needs to be.
If I remove the exception breakpoint from that line and just set a regular breakpoint, as expected, it stops at that point. I run through and there are no errors at all. If I run through the whole breakpoint, it does what it needs to and then shows the MFMailComposer in the App. So it's not actually "crashing", but the exception breakpoint clearly has a problem with it.
How can I find out WHY it's crashing? More importantly, how can I fix it? (which will probably only be answerable after the first question gets answered).

iOS7 UIToolbar crash

I have an iPad app that has been running fine until iOS7. This issue seems to be only on ipad 2nd gen models and earlier when iOS7 is installed. Anyway, I've been tearing my hair out trying to figure out where this error is coming from, but have had no luck. The console in xcode (5) reports the following error after I perform a logged in segue:
2013-11-18 11:17:31.768 MyApp[400:60b] *** -[UIToolbar backdropView:willChangeToGraphicsQuality:]: message sent to deallocated instance 0x18ec23e0
I can't lookup the address for more info (image lookup -a 0x18ec23e0) it just returns nothing.
In instruments running zombies, it reports that a message was sent to a UIToolbar like so:
When I inspect the instance, I get the following:
How do I debug this? I have no idea where this call is being made and it seems dependent upon a physical deivce (doesn't happen on the iPad mini or ipad 3/4)
I was struggling with a very similar error, also with a UIToolbar, that I couldn’t figure out until a couple hours ago. I also had to use and try to understand the zombies’ instrument but without any luck.
What I did was to pay a close attention to the call stack that was presented when the Exception Breakpoint was activated as described in the following tutorial:
http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1
Even though the call stack didn’t point me to the exact code line, I noticed that the app was trying to add a UIToolbar to a ViewController. Turns out that what I was doing was creating a local UIToolbar inside of a method and adding it to the presented UIView. After have modified this behavior, I stopped having the annoying sudden crash. It was difficult for me to find the issue because looking at the code of the ViewController that caused the crash, there was no code that created or used a UIToolbar; however this VC included a custom view that did exactly that, as I explained before.
Have said all of this I recommend you to closely inspect the VC that generates the crash. If you need to create a UIToolbar programmatically I recommend you to declare it as a strong property to maintain the memory reference as long as needed.
I hope this helps you.
I struggled with this for a while today. I had two storyboards, one for login/signup (set as the main storyboard for the project) and another with the rest of the application. The app delegate would detect if a user was logged in and instantiate the root view controller of the other storyboard. The root view controller of the login storyboard is a navigation controller and after after some investigation with instruments I realized there was a UIToolbar being instantiated from the nib. Opening up the storyboard file revealed an off-screen UIToolbar object in the root view controller. I deleted it and I'm not crashing any more.
I should also mention this crash was only occurring when I was using MKMapView.

Runtime error: Unrecognized selector sent to instance

I'm new to using a mac and iOS development. Today I followed this tutorial on to a how to bind data to a table view by making use of Prototype cells and the Story Board. I've got up to the part of the tutorial where I should be able to run the app so the bound data shows up in the UITableView like this:
My app compiles fine, but as soon as it starts running it hits a runtime error:
[ViewController viewControllers]: unrecognized selector sent to instance
I have tried going through the tutorial several times now. I've followed the tutorial exactly as it says and have even created 3 different projects from scratch to make sure that nothing is going wrong. Can anybody help me fix the error? I've spent hours trying to work out what's going wrong, and I don't want to give up now as iOS development seems so exciting compared to other platforms!
Unrecognized selector means that there is an undefined method being called.
One thing to do is to see if there are any compiler warnings. Does it give you any? Have a look, it may give you a clue what is undefined.
The tutorial refers to ViewController class. It looks like that this class is used briefly at the start of the tutorial but then it is replaced with another class. You may remove this class later on altogether. Check if you wire tab bar controller properly. have you set it to be "an entry point"?
Check the storyboard. Where does an incoming arrow point to? Compare two images below. First has the entry arrow pointing to ViewController (my guess), second - the arrow point to Tab Bar Controller
.
At some point (without the code is hard to tell where) you are getting a reference to a ViewController, treating it as a UITabBarViewController.
viewControllers is a method of UITabBarViewController but you are invoking it on a ViewController.
You probably have something like
UITabBarViewController *tabBarVC = (UITabBarViewController *)[something aMethod];
tabBarVC.viewControllers...
So it compiles fine, but it rightfully crashes at runtime.

Resources