After migrating to xcode 7 cocoa pods libraries stopped working - ios

Recently new ios and xcode appeared so I decided to update to have a latest version. First of all migration manager popped out and left many syntax errors. But after one hour I fixed them all. App compiled and it was a disaster. I use several external libraries (written in objc) using cocoa pods. They mostly don't work now.
I'm using facebook image picker to get images from facebook - doesn't work, same for instagram image picker. As of my code also now ALAssets aren't working - well partially they are - I'm just not getting posterImages of groups and thumbnails of all photos. I can see correct amount of photos just thumbnails are all nils now.
There are more problems. Sometimes back button in navigation controller is not appearing. Anyone maybe I'd be able to fix that errors of 'my' code, but there's no way I'd fix all issues in these external libraries (especially in such a short time). I thought only swift will be impacted, but objc libraries are also under attack.
So is there an issue with some cocoa pods settings or just libraries will no longer work? I heard there's no way to use swift 1.2 in xcode 7. So I decided to downgrade back to 6.4. App compiled without any problem (after cleaning up derivedData). In simulator (ios 8.4) works like a charm. But on device with ios9 all the same issues are present. No photos thumbnails from gallery etc :)
Anyway there's one more thing. My app has to offer similar functionality to the one client has sent me few weeks ago. I may be unexperienced in ios programming, but this app isn't working as well! No photos from gallery :) And it's from appstore. It looked very professional. I smell serious changes under the ios 9 hood.
So I don't think it's something wrong with swift 2.0 - it's an ios itself.

I fixed all the problems! I just want to say they were not related to migration from swift 1.2 to swift 2.0. Going one by one:
nil thumbnails from ALAssetsLibrary - not sure why this was happening, but I restarted device and problem never came back. So good advice is to check if they're not nil (as I did).
Not working instagram and facebook libraries. Well first of all there's nothing wrong with cocoa pods. Reason of all this mess is App Transport Security. I had to add this to Info.plist file (last one not related to facebook/instagram):
http://pastebin.com/rWgyiKXH
You simple have to add all servers that app connects.
Not working back button - well that was a problem with my storyboard. I had many push segues, but every viewController was embeedded in navigationController. That worked on ios8, but not on ios9. I had to get rid of them and left first one and ones that were appearing by replace segue.
No need to downgrade :)

Related

iOS App started crashing without updates

My app was updated 3 months ago.
And was working 100% fine (Crashlytics had more than 96% crash free users)
Yesterday - 2/1/2018 all of a sudden i received a late night email from crashlytics that there is an issue with my app.
And all of the users that were trying to enter on a viewcontroller from a tab bar was crashing.
http://crashes.to/s/1132ba4b6ff
I understand that the pod JTAppleCalendar is not on the latest version ok.
But for 3 months everything was ok and in one night there is an issue.
As far as my mind goes, Apple is secretly updating their libraries and not only on iOS updates.
Has anyone experienced anything like this before?
The swift file is the following (with the version i use)
https://github.com/patchthecode/JTAppleCalendar/blob/6.1.6/Sources/JTAppleCalendarView.swift
and its in the line 283.
The updated pod version works fine. Although now i'm uploading a new version this is really weird.
FYI. All I'm trying to do is to raise awareness because i'm not sure if Apple has informed developers that they do
background updates on their libraries.

How to prevent framework to jump into the .m file when crashing in iOS

I am using XCode 6 to develop a SDK using static library. I grabbed the script from this link: http://www.raywenderlich.com/65964/create-a-framework-for-ios.
When I tried to crash it intentionally, the actual implementation is exposed. However, we wanted to hide it. Just like crashing a third party framework, for example Parse iOS SDK, it will jump to something like assembly code instead of the actual implementation file.
Here is image when crashing in Parse:
Any advances would be appreciate.
I think your setting is all correct, you can still see your implementation because you are using the same computer as you did development and being symbolicated automatically. It will be hidden when other users try to crash it.

Xcode stops autocompleting, UIKit classes not available

The topic has raised several times within the last weeks. Till now I haven't found a proper solution. Is it just a momentary Xcode bug or is there more behind it?
Scenario:
In one of my projects autocompletion has stopped working when I last opened it. Other projects are not affected. It looks kind of reasonable that once this problem is around, I also can't cmd+click the different classes imported by UIKit anymore like UIViewController or protocols like UITableViewDataSource within this particular project. An error pops up "Symbol Not Found". So in a way, even though it is working fine when running the app, it is just not available from inside the files.
Restarting Xcode, deleting derived data etc. hasn't brought me any further so far.
Any ideas? Or - like mentioned - really nothing else than just a bug?
I don't know which part exactly was the key issue but
Installing Xcode 6.1
Downloading iOS 8 libraries & Xcode 6 libraries within Preferences
solved the problem.
Setting active scheme works for me.
You have to select proper device corresponding to your installed components.
XCode 6.1 has iOS8 primary, so you have to select iPhone6 or Resizable iPhone, if you select iPhone5 it couldn't find it.
(project name>device) on the right of the 'Stop running' button

My Instant Messaging Project Won't Work Like in the Xcode Tutorial

So I was just trying to create a simple instant messaging application on my Xcode 5.0.2. I downloaded the free beta SDK from c2call.com and I followed exactly what their video instructed. However once I tried to build, atleast a dozen issues popped up.
Heres the link to the tutorial:
http://www.youtube.com/watch?v=qyp_BFORvIk
One of the comments said that one possible reason might be because I need to set my Xcode 5 to default in build settings, but I'm not sure how. Does anyone know what I should do?

Building with iOS7 produces iOS6 looking widgets

After moving to XCode 5 and the iOS7 base SDK, some of the UI widgets in my app still look like iOS6-style (gradients, frames) on iOS7 devices. This doesn't happen on the equivalent emulator for iOS7. This also doesn't happen for all widgets, UIDocumentInteractionController's popup looks like iOS7 on device, but UIPopoverController doesn't. The keyboard for renaming a file also shows this discrepancy between emulator and device.
How does iOS determine the visual style of UI elements? Is it based on a statically linked library or something determined at runtime? I've tried purging the app from the device completely, but no change.
Emulator for retina iPad: UIPopoverController
iPad 3rd gen with iOS 7: UIPopoverController
The code in this case is fairly straightforward, no customization of the rendering or layout.
self.poController = [[UIPopoverController alloc] initWithContentViewController:audioCopyController];
[audioCopyController showDoneButton:NO];
audioCopyController.view.frame = CGRectMake(0,0,350,250);
_poController.popoverContentSize = audioCopyController.view.bounds.size;
_poController.delegate = self;
[_poController presentPopoverFromRect:view.audiocopyButton.frame
inView:view
permittedArrowDirections:UIPopoverArrowDirectionDown
animated:YES];
Thanks for the help in advance.
Check you Project config file and Target config file.
It is probably set with an iOS 6.X base SDK.
For this:
Go to your project config file in Xcode 5
Click the Build Settings tab
Edit the base SDK field to switch it to iOS 7.
Sometimes, we've experienced issues with Xcode not taking the current setting into account.
Changing it and compiling helps it understand that it needs to be changed.
Make sure you configure this correctly for your Project config and each and every target config file you run this from.
You might well have 2 different targets for simulator and for your devices.
Hope this helps
Regards
David
Ok, I found out what the problem was. David's suggestion got me thinking.
I am maintaining multiple apps at the same time, and one of them is quite old. The new Interface Builder in XCode5 breaks the transparency for a lot of the fields in the old app so I was keeping XCode4 in a separate installation folder alongside of XCode5. It seems that somehow my XCode5 project was still pointing at the SDK folders of XCode4 (not sure how this was possible, looking at the actual linker command line would probably shed some light), so after deleting XCode4's 6.1 SDK folder from my machine, a clean build with XCode 5 produced the correct iOS 7-looking widgets in my iOS-supported app.
The moral of the story is, be very careful with multiple XCode/SDK installations on the same machine. Hopefully this can help other folks who may be trying something similar to provide support for legacy apps.

Resources