Мое приложение отлично работает в отладочной версии и аварийно завершает работу в версии выпуска только при использовании следующего метода AFNewtworking 3.0

#ios #swift #crash #afnetworking-3

#iOS #swift #сбой #afnetworking-3

Вопрос:

 // This line crashes in release version (TestFlight)
// a method called from AFNetworking 3, I added it using CocoaPods. 

let dataTask:NSURLSessionDataTask =
self.afUrlSessionManager!.dataTaskWithRequest(request) { (response, responseObject, error) in

        if( error != nil){
                        loginFailure(error,nil)

                    }else{
        // parse responseObject json
        let loginData:NSMutableDictionary =  responseObject as! NSMutableDictionary
                    }
            }
dataTask.resume()
  

Отчет о сбое, отправленный группой проверки Apple:

 Incident Identifier: D2CE605A-2EC7-4BCE-B8B7-07BC5F93E56D
CrashReporter Key:   d66ba2277da7577ba138220c9e93f0d613cebb50
Hardware Model:      xxx
Process:             AfaqyGPS [366]
Path:                /private/var/containers/Bundle/Application/2A6F7DAC-41A2-42A4-8DE1-4C8100F5F58B/AfaqyGPS.app/AfaqyGPS

        Identifier:          AF-GP
        Version:             5.0 (1.0)
        Code Type:           ARM-64 (Native)
        Role:                Foreground
        Parent Process:      launchd [1]
        Coalition:           AF-GP [447]


        Date/Time:           2016-10-18 21:29:29.6894 -0700
        Launch Time:         2016-10-18 21:29:21.1932 -0700
        OS Version:          iPhone OS 10.0.2 (14A456)
        Report Version:      104

        Exception Type:  EXC_CRASH (SIGABRT)
        Exception Codes: 0x0000000000000000, 0x0000000000000000
        Exception Note:  EXC_CORPSE_NOTIFY
        Triggered by Thread:  0

        Application Specific Information:
        abort() called

        Filtered syslog:
        None found

        Thread 0 name:  Dispatch queue: com.apple.main-thread
        Thread 0 Crashed:
        0   libsystem_kernel.dylib          0x0000000188d96014 0x188d77000   126996
        1   libsystem_pthread.dylib         0x0000000188e5d460 0x188e58000   21600
        2   libsystem_c.dylib               0x0000000188d0a3f4 0x188ca7000   406516
        3   libswiftCore.dylib              0x0000000100980100 swift_deletedMethodError (__hidden#8337_:113)
        4   libswiftCore.dylib              0x0000000100965bc0 swift::swift_dynamicCastFailure(swift::Metadata const*, swift::Metadata const*, char const*) (__hidden#7547_:409)
        5   libswiftCore.dylib              0x0000000100965c50 swift_dynamicCastClass (__hidden#7547_:501)
        6   libswiftCore.dylib              0x000000010098ee04 swift_dynamicCastObjCClassUnconditional (__hidden#9867_:1003)
        7   AfaqyGPS                        0x00000001001518d4 static Services.(login(String, password : String, loginSuccess : () -> (), loginFailure : (NSError?, NSString?) -> ()) -> ()).(closure #1) (Services.swift:801)
        8   AFNetworking                    0x0000000100661594 __72-[AFURLSessionManagerTaskDelegate URLSession:task:didCompleteWithError:]_block_invoke_2.150 (AFURLSessionManager.m:308)
        9   libdispatch.dylib               0x0000000188c51200 0x188c50000   4608
        10  libdispatch.dylib               0x0000000188c511c0 0x188c50000   4544
        11  libdispatch.dylib               0x0000000188c55b30 0x188c50000   23344
        12  CoreFoundation                  0x0000000189d75f2c 0x189c99000   905004
        13  CoreFoundation                  0x0000000189d73b18 0x189c99000   895768
        14  CoreFoundation                  0x0000000189ca2048 0x189c99000   36936
        15  GraphicsServices                0x000000018b725198 0x18b719000   49560
        16  UIKit                           0x000000018fc75628 0x18fbfa000   505384
        17  UIKit                           0x000000018fc70360 0x18fbfa000   484192
        18  AfaqyGPS                        0x000000010011c07c main (AppDelegate.swift:14)
        19  libdyld.dylib                   0x0000000188c845b8 0x188c80000   17848

        Thread 1:
        0   libsystem_pthread.dylib         0x0000000188e58db0 0x188e58000   3504

        Thread 2:
        0   libsystem_pthread.dylib         0x0000000188e58db0 0x188e58000   3504

        Thread 3 name:  com.apple.uikit.eventfetch-thread
        Thread 3:
        0   libsystem_kernel.dylib          0x0000000188d7816c 0x188d77000   4460
        1   libsystem_kernel.dylib          0x0000000188d77fdc 0x188d77000   4060
        2   CoreFoundation                  0x0000000189d75cec 0x189c99000   904428
        3   CoreFoundation                  0x0000000189d73908 0x189c99000   895240
        4   CoreFoundation                  0x0000000189ca2048 0x189c99000   36936
        5   Foundation                      0x000000018a7b0b1c 0x18a7a4000   51996
        6   Foundation                      0x000000018a7d160c 0x18a7a4000   185868
        7   UIKit                           0x00000001905eac7c 0x18fbfa000   10423420
        8   Foundation                      0x000000018a8ae50c 0x18a7a4000   1090828
        9   libsystem_pthread.dylib         0x0000000188e5b860 0x188e58000   14432
        10  libsystem_pthread.dylib         0x0000000188e5b770 0x188e58000   14192
        11  libsystem_pthread.dylib         0x0000000188e58dbc 0x188e58000   3516

        Thread 4:
        0   libsystem_kernel.dylib          0x0000000188d96a88 0x188d77000   129672
        1   libsystem_pthread.dylib         0x0000000188e5936c 0x188e58000   4972
        2   libsystem_pthread.dylib         0x0000000188e58db4 0x188e58000   3508

        Thread 5 name:  com.apple.NSURLConnectionLoader
        Thread 5:
        0   libsystem_kernel.dylib          0x0000000188d7816c 0x188d77000   4460
        1   libsystem_kernel.dylib          0x0000000188d77fdc 0x188d77000   4060
        2   CoreFoundation                  0x0000000189d75cec 0x189c99000   904428
        3   CoreFoundation                  0x0000000189d73908 0x189c99000   895240
        4   CoreFoundation                  0x0000000189ca2048 0x189c99000   36936
        5   CFNetwork                       0x000000018a48fcec 0x18a3c3000   838892
        6   Foundation                      0x000000018a8ae50c 0x18a7a4000   1090828
        7   libsystem_pthread.dylib         0x0000000188e5b860 0x188e58000   14432
        8   libsystem_pthread.dylib         0x0000000188e5b770 0x188e58000   14192
        9   libsystem_pthread.dylib         0x0000000188e58dbc 0x188e58000   3516

        Thread 6:
        0   libsystem_pthread.dylib         0x0000000188e58db0 0x188e58000   3504

        Thread 0 crashed with ARM Thread State (64-bit):
            x0: 0x0000000000000000   x1: 0x0000000000000000   x2: 0x0000000000000000   x3: 0x00000001702c34a6
            x4: 0x0000000000000014   x5: 0x0000000000000020   x6: 0x0000000000000000   x7: 0x0000000000000cf0
            x8: 0x0000000008000000   x9: 0x0000000004000000  x10: 0x0000000000003db5  x11: 0x00000001b0989bcb
           x12: 0x00000001b0989bcb  x13: 0x0000000000000018  x14: 0x0000000000000001  x15: 0x0000000000000881
           x16: 0x0000000000000148  x17: 0x0000000000000000  x18: 0x0000000000000000  x19: 0x0000000000000006
           x20: 0x00000001ae3eec40  x21: 0x00000001ae3f40d8  x22: 0x000000016fd02a58  x23: 0x000000016fd02a40
           x24: 0x000000010013cae8  x25: 0x0000000170472bc0  x26: 0xffffffffffffffff  x27: 0x0000000170469bc0
           x28: 0x000000010013cab4   fp: 0x000000016fd02990   lr: 0x0000000188e5d460
            sp: 0x000000016fd02970   pc: 0x0000000188d96014 cpsr: 0x00000000 
  

Комментарии:

1. Что такое строка 801 Services.swift?

2. Я упоминал об этом в вопросе.

3. Итак, у вас пустое закрытие? Зачем вы извлекаете данные, если вы ничего с ними не делаете? Поскольку у вас произошел сбой при принудительном сбросе ( as! ), а показанный код его не содержит, я предполагаю, что вы не показываете фактический код. Пожалуйста, покажите это

4. У меня есть код в закрытии, но он не упоминается, потому что сбой в этой строке и не доходит до кода в закрытии, поэтому нет необходимости в коде в закрытии.

5. Сбой заключается в этом закрытии. Пожалуйста, покажите это

Ответ №1:

Наконец, я устранил проблему, я использовал следующий метод для кодирования объекта parameters json, который добавляется к URL, и который приводит к сбою приложения только в релизной версии. Я удалил его и использовал вместо data.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLHostAllowedCharacterSet()) ; он работает нормально, и приложение было одобрено.

  (id)getJSONDictObjFromString:(NSString *)jsonString{
    NSError * err;
    if ([jsonString isKindOfClass:[NSDictionary class]]) {

        return jsonString;
    }

    NSData *data =[jsonString dataUsingEncoding:NSUTF8StringEncoding];
    NSDictionary * response;
    if(data!=nil){
        response = (NSDictionary *)[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:amp;err];
    }
    return response;
}