ios - Swift:在 AFNetworking 调用的闭包中解包选项

标签 ios objective-c swift ios8 afnetworking

当我使用 AFHTTPRequestOperation Manager 调用某些包含 GET 请求的方法时,它有时会不正确地回调到另一个使用操作管理器的 GET 请求的成功 block /关闭。

这是错误日志中的第 3 行:

partial apply forwarder for reabstraction thunk helper from @callee_owned (@in (Swift.ImplicitlyUnwrappedOptional<ObjectiveC.AFHTTPRequestOperation>,  
Swift.ImplicitlyUnwrappedOptional<Swift.AnyObject>)) -> (@out ()) to @callee_owned (@owned Swift.ImplicitlyUnwrappedOptional<ObjectiveC.AFHTTPRequestOperation>,  
@owned Swift.ImplicitlyUnwrappedOptional<Swift.AnyObject>) -> (@unowned ()) (AppDelegate.swift:615)

第二行:

reabstraction thunk helper from @callee_owned (@owned Swift.ImplicitlyUnwrappedOptional<ObjectiveC.AFHTTPRequestOperation>,  
@owned Swift.ImplicitlyUnwrappedOptional<Swift.AnyObject>) -> (@unowned ()) to @callee_owned (@in (Swift.ImplicitlyUnwrappedOptional<ObjectiveC.AFHTTPRequestOperation>,  
Swift.ImplicitlyUnwrappedOptional<Swift.AnyObject>)) -> (@out ()) with unmangled suffix "_constprop0" (GroupsDataSource.swift:365)

这是我得到的错误日志。

Crashed: com.apple.main-thread
EXC_BREAKPOINT UNKNOWN at 0x0000000100147e48

Thread : Crashed: com.apple.main-thread
0  Kickit                         0x0000000100147e48 Kickit.GroupsDataSource.(logoutForce (Kickit.GroupsDataSource) -> () -> ()).(closure #1) (GroupsDataSource.swift:809)
1  Kickit                         0x00000001001474dc Kickit.GroupsDataSource.(logoutForce (Kickit.GroupsDataSource) -> () -> ()).(closure #1) (GroupsDataSource.swift:823)
2  Kickit                         0x0000000100143074 reabstraction thunk helper from @callee_owned (@owned Swift.ImplicitlyUnwrappedOptional<ObjectiveC.AFHTTPRequestOperation>, @owned Swift.ImplicitlyUnwrappedOptional<Swift.AnyObject>) -> (@unowned ()) to @callee_owned (@in (Swift.ImplicitlyUnwrappedOptional<ObjectiveC.AFHTTPRequestOperation>, Swift.ImplicitlyUnwrappedOptional<Swift.AnyObject>)) -> (@out ()) with unmangled suffix "_constprop0" (GroupsDataSource.swift:365)
3  Kickit                         0x0000000100193934 partial apply forwarder for reabstraction thunk helper from @callee_owned (@in (Swift.ImplicitlyUnwrappedOptional<ObjectiveC.AFHTTPRequestOperation>, Swift.ImplicitlyUnwrappedOptional<Swift.AnyObject>)) -> (@out ()) to @callee_owned (@owned Swift.ImplicitlyUnwrappedOptional<ObjectiveC.AFHTTPRequestOperation>, @owned Swift.ImplicitlyUnwrappedOptional<Swift.AnyObject>) -> (@unowned ()) (AppDelegate.swift:615)
4  libdispatch.dylib              0x00000001970253ac _dispatch_call_block_and_release + 24
5  libdispatch.dylib              0x000000019702536c _dispatch_client_callout + 16
6  libdispatch.dylib              0x0000000197029980 _dispatch_main_queue_callback_4CF + 932
7  CoreFoundation                 0x0000000186241fa4 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12
8  CoreFoundation                 0x000000018624004c __CFRunLoopRun + 1492
9  CoreFoundation                 0x000000018616d0a4 CFRunLoopRunSpecific + 396
10 GraphicsServices               0x000000018f30f5a4 GSEventRunModal + 168
11 UIKit                          0x000000018aaa23c0 UIApplicationMain + 1488
12 Kickit                         0x0000000100193ca4 main (AppDelegate.swift:15)
13 libdyld.dylib                  0x000000019704ea08 start + 4

此处的成功 block 是 AppDelegate: 615。GroupsDataSource: 365 和 GroupsDataSource: 809 的结构类似。

let manager = AFHTTPRequestOperationManager()

var user_id : Int = NSUserDefaults.standardUserDefaults().objectForKey("user_id") as Int

if (justSeenEventIDs.count > 0){
    manager.GET(serverURL+"users/seen_events.json",
        parameters: ["user_id" : userID()!, "event_ids" : justSeenEventIDs],
        success: { (operation: AFHTTPRequestOperation!,responseObject: AnyObject!) -> Void in

            println("JSON: " + responseObject.description)
            if (responseObject.isKindOfClass(NSDictionary)){


            }


        },
        failure: { (operation: AFHTTPRequestOperation!,error: NSError!) -> Void in
            println("Error: " + error.localizedDescription + " code: " + "\(error.code)")
        })
    }
}

最佳答案

我最终使用了 Alamofire 而不是 AFNetworking,这最终解决了我的问题。由 AFNetworking 的创建者编写 github.com/Alamofire/Alamofire

关于ios - Swift:在 AFNetworking 调用的闭包中解包选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27669259/

相关文章:

ios - 加密直播在IOS5不播放,在IOS4播放

ios - 通过 Xcode 8 中的按钮移动图像

ios - 循环加载动画(如 Weather Channel App)

ios - 计算 UITableViewCell 的最佳图像大小

ios - UISplitViewController - 通过拖动分隔线来调整 View 大小

iOS AVFoundation 设置曝光值,以 EV 为单位

objective-c - 如何在 iOS 上的 Core Data 中设置新创建的关系?

objective-c - Cocoa:拖放任何文件类型

objective-c - 为什么标签栏在导航中隐藏?

swift - 使用 Xcode Playground 的 Swift 代码中的 EXC_I386_GPFLT