I have an already developed project for ios3 and ios4 developed on sdk4.but my app get crashed on ios 5 while it was working fine on lower version.
As my guess it's due to ARC concept of ios5.
So what i tried is
installed sdk 4.2.
refractor project from EDIT option for ARC.(I get some error while converting for arc.i continued).
Disabled arc from build settings.
also set the flag -fno-objc-arc
But no luck app still crashing.
it crash on accessing property value.
Why did you guess it was ARC? ARC doesn't even happen unless you specifically ask it to do so. I'm betting it had more to do with an API change between ios 4 and ios5.
My advice is to use your source control to go back to your version before you made those changes, run it again on ios5, read the stack trace, and find out what is really causing your app to crash.
Related
I have been working on an iOS app. It was working fine until a couple of days ago, it started behaving strangely. The app crashes on production but it creates no crash logs. However, when same scenario is tested out in QA, it works fine. Now I have been trying to find out the reason but without any crash logs or crash in debugging mode, it has become very difficult for me.
Any suggestion, how to tackle it?
Thanks!
P.S. I am using XCode 4.6.1 and app is for iOS 6.0.
Answering my own question, I have found out after detailed research on the internet that some crashes kill the application before logging the Crash Log. My error was that of a delegate property for my services. After long hard tries, I got to the root cause of the problem, since I had converted the code to ARC so the delegate property was unsafe_unreatained, which released the delegate while it was still in use by the service, so I just had to convert it into strong and set it to nil in dealloc. Further description can be seen here: https://stackoverflow.com/a/9065105/1351911.
I had the same problem, building ipa's in Xcode 4.6.1 with sdk version 6.0 or above crashes the app like anything. Try archiving it in Xcode 4.4 or 4.3 may be a lower version and try.
New here guys but have got a genuine problem. I have an iPhone app that was developed using SDK4. With apple introducing the new iOS version 6, does my code need to be recompiled on the new SDK to make it compatible with version 6?
Right now it crashes on iOS6. Also, do I need to do that everytime apple brings out a new version? I wonder every other app on earth already does that ?!
The problem with major iOS upgrades is method deprecation. It may happen that some parts of your code relies on methods that are not supported in iOS6. When this happens you should first check for API changes then recompile it with the latest API. If your code base works fine with iOS6 than there is no need for recompiling it, but unfortunately that doesn't seems to be your case.
Sometimes you don't need too. Most of the time, Apple publishes updates for libraries, so sometimes the old code is not compatible anymore. You have to recompile it, or you'll find issues.
For example I had a working app on iOS 5. With the iOS 6 update, I had to refer some code new because the app crashed with SIGABRT. Before iOS 6 it was working fine. Through Xcode's Debugger, most of the time finding issues is not hard work.
I've found that most of the time a crash will be caused by an existing bug in my application that I wasn't aware of. Subtle changes revealed it. It is rarely just a question of recompiling, but of fixing that bug.
Just recompiling can be dangerous. Apple can (and does) detect what version of the development tools your app was compiled with, maintains some behaviour that will keep your app running. Update, and you'll get the new behaviour instead.
I didn't have to recompile mine just for the sake of IOS6. They worked fine. But I had to adjust for 4" iphone 5 screen.
May be this will be silliest question but users are facing such problems.
Sorry for same.
I have made build on xcode 3.2 which has maximum IOS 4.3 and uploaded on itunes.
Now users which are downloading application having IOS 5.0 says that application is getting crashed or vanished.
So, just want to ask that build made on xcode 3.2 runs on IOS 5.0
Please help.....
Thanks a lot....
The short answer is that you have a bug in your app.
An app compiled for iOS 4.3 should work just fine. However, as with any update to the operating system, ambiguities in API calls are tightened, undocumented behaviours vanish and some APIs become deprecated. Deprecations won't cause problems (yet), though both of the others might.
For this reason you should be testing with new versions as they become available.
Nearly pulling my hair out on this one.
I developed my iPhone app mostly using the 3.1.2 SDK and Three20. (there is no version associated with the cut of Three20 I was using, but the latest date in the CHANGES doc is May 31st, 2010.)
I upgraded to the 4.1 SDK and things mostly ran fine. I decided to upgrade Three20 to the latest version as well, but I encountered the compile issue listed here (note: apple login required). After a lot of strife I was able to solve the issue with the help of that thread, but, lo and behold, the app is now completely blank.
The skeleton is there: tabbed navigation, with four tabs (the fourth is currently selected in my pic), but no data. Even switching to the previous version of Three20 no longer works. I'm baffled. Any ideas?
Are you calling [window makeKeyAndVisible] in your startup code? It was optional before but it seems in 4.0 you must call it. It needs to go towards the end of your applicationDidFinishLaunching: method.
I am dealing with an old code designed for iPhone OS 2.0. In this code I have some instructions that we deprecated on iPhone 3.0.
I am not willing to change the version because I have many customers, specially on iPod Touch, that are still using 2.0. If I update the instructions they will be unable to continue receiving the updates.
The application is compiled for 2.0 and always have been like that.
I have submitted a new version for Apple, where some bugs were corrected and new functionality was added. I have always sent this app to apple and they never complained. Now they rejected the application telling me that it is crashing under OS 3.1.3.
I've followed their instructions but I don't see any crash and the part of the code that uses the "deprecated" function works perfectly on 3.1.3.
Compiling the project for 3.1.3, I see a yellow warning on Xcode telling me that one instruction was deprecated on 3.1.3.
The big question is: will this instruction work on 3.1.3 and should I ignore this warning?
Can this make the iPhone crash?
In my mind, all new versions of the iPhone OS keeps back compatibility with older versions, so, as I think, any application compiled for 2.0 will run on 3.1.3 and all versions up.
As you see, I have tested this on 3.1.3 and the application works perfectly.
How can that be? Any ideas?
thanks for any help.
Deprecated calls are designed to work in the OS release that they became deprecated in, but stop working in some (undefined) future OS. The deprecation is a warning to developers: Hey, you should change your code, this WILL break in the future. It's a way to update the API-base without breaking everyone.
In summary, you're okay to use these calls now, but you'll want to edit the code should you ever decide to ditch 2.x operability.