PromiseKit 分段错误:11

Posted

技术标签:

【中文标题】PromiseKit 分段错误:11【英文标题】:PromiseKit segmentation fault: 11 【发布时间】:2016-05-12 05:37:13 【问题描述】:

我正在尝试使用 PromiseKit 获得基本的承诺。但是下面的代码不会编译:

import Foundation
import PromiseKit

class MyClass 
    var myInt: Int?

    func sample() -> Promise<AnyObject> 
        return Promise  fulfill, reject in
            fulfill(1)
        .then  data -> Int in
            return 3
        
    

    init() 
        sample().then  data -> Void in
            debugPrint("got data: \(data)")
        
    

这是我得到的错误:

command failed due to signal: segmentation fault: 11

这很令人沮丧。有人遇到过吗?

【问题讨论】:

错误是来自Swift编译器,还是运行时的程序? 每当我尝试构建 @kennytm 时,它都来自 swift 编译器 如果你在Xcode中进入Report navigator(按⌘8,或者点击左侧面板的????),你应该可以找到编译日志并找出它在哪一行导致编译器崩溃。 谢谢@kennytm。看来,如果我将这一行更改为:.then data -&gt; Int in.then data -&gt; NSNumber in 那么它构建得很好 【参考方案1】:

这是因为Int 不是AnyObject

func sample() -> Promise<AnyObject> 
    return Promise  fulfill, reject in
        fulfill(1)
    .then  data -> Int in
        return 3
    

这很可能在 Swift 3 中得到修复,但是其中任何一个都可以修复编译:

func sample() -> Promise<Int> 
    return Promise  fulfill, reject in
        fulfill(1)
    .then  data -> Int in
        return 3
    

或者:

func sample() -> Promise<AnyObject> 
    return Promise  fulfill, reject in
        fulfill(1)
    .then  data -> NSNumber in
        return 3
    

【讨论】:

以上是关于PromiseKit 分段错误:11的主要内容,如果未能解决你的问题,请参考以下文章

带有 std::promise 的 C++11 分段错误

Alamofire 和 PromiseKit 返回一个 Promise<[T]>

在 PromiseKit 3.0 中加入失败

从 PromiseKit 中的完成处理程序返回 Promise

从 PromiseKit/Alamofire 返回一个 Promise

PromiseKit 语法链 swift