Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

App crash on sign in (xcode 9.3) EXC_BAD_ACCESS (code=1, address=0x1)

Tags:

swift

xcode9.3

I'm getting this crash on 9.3 update, on 9.2 everything worked fine. What can it be? The error appears on sign in through any source (login pass, VK, google)

class AppDelegate: UIResponder, UIApplicationDelegate, GIDSignInDelegate {

var window: UIWindow?

private let settingsManager = SettingsManager.manager

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

//  Googole Map
    GMSServices.provideAPIKey("-k")

    UINavigationBar.appearance().tintColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
    UINavigationBar.appearance().barTintColor = #colorLiteral(red: 0.2069905996, green: 0.2386507988, blue: 0.3337202668, alpha: 1)

    UITabBar.appearance().tintColor = #colorLiteral(red: 0.2069905996, green: 0.2386507988, blue: 0.3337202668, alpha: 1)

    let barFont = UIFont.systemFont(ofSize: 20)
    UINavigationBar.appearance().titleTextAttributes =  [NSForegroundColorAttributeName: #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1), NSFontAttributeName: barFont]


    if settingsManager.isFirstStartApp {

    } else {

        settingsManager.isFirstStartApp = true
        settingsManager.setDefaultSettings()

    }

    // Facebook
    FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)

    // Google +
    var configureError: NSError?
    GGLContext.sharedInstance().configureWithError(&configureError)
    assert(configureError == nil, "Error configuring Google services: \(String(describing: configureError)) )")
    GIDSignIn.sharedInstance().delegate = self

    return true
}

Error in the first application method when signing throug google. I've searched some topics - no luck. Conversion to Swift 4 - no luck. Any ideas?

Crash log pastebin.com/DEEeQnZB

With the accepted answer I got further, bbut now it crashes on

        let predicate = NSPredicate(format: "isActive == %@", true as CVarArg) 

with the same "Bad access"

UPD: The issue is resolved by replacing

let predicate = NSPredicate(format: "isActive == %@", true as CVarArg)

to

let predicate = NSPredicate(format: "isActive == true")
like image 355
Max Kraev Avatar asked Mar 30 '18 14:03

Max Kraev


1 Answers

Have a similar issue with Facebook login - a work for me was found in the Xcode 9.3 release notes:

https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-DontLinkElementID_1

To quote them

In circumstances where protocol methods or base class methods defined in Objective-C claim to take non-null arguments of type id in their headers, but get invoked with nil values at runtime, Swift code compiled by Xcode 9.3 that overrides those methods may crash when the Swift implementations are invoked. (38675815) Workaround: Change the Swift override to take a value of type Any?. For example, if you implement the UIApplicationDelegate protocol's application(_:open:sourceApplication:annotation:) method:

class AppDelegate: UIApplicationDelegate {
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
    return true
}

The program may crash when passed nil as the annotation argument. Avoid the crash by making the annotation argument have type Any?:

class AppDelegate: UIApplicationDelegate {
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any?) -> Bool {
    return true
}
like image 165
Spohn Avatar answered Nov 15 '22 12:11

Spohn