问题
I am trying to call a function of a singleton class with completion handler argument but I get "Command failed due to signal: Segmentation fault: 11" error. I am using Xcode 6.2 (6C101) and trying to build for iOS 8 on iPhone 6 simulator. Here is the singlton class:
public class ClientManager {
public class var sharedInstance: ClientManager {
struct Singleton {
static let instance = ClientManager()
}
return Singleton.instance
}
private init() {
}
public func fetchServiceInfo(serviceName: String, completionHandler: (JSON?, NSError?) -> Void) {
Alamofire.request(.GET, Router.ServiceInfo(serviceName)).responseJSON { (req, res, json, error) in
completionHandler(JSON(json!), error)
}
}
}
And when I call fetchServiceInfo
function within a view controller, Xcode crashes (SourceKitService Crashed):
ClientManager.sharedInstance.fetchServiceInfo("default") { (json, error) in
println(json)
}
However, if I call the same function within the init
method of ClientManager
it works properly:
private init() {
self.fetchServiceInfo("default") { (json, error) in
println(json)
}
}
I am using Alamofire
and SwiftyJSON
libraries.
回答1:
¿Is posible you are using SwiftyJSON as framework, cocoapods or git submodule? Look at https://github.com/SwiftyJSON/SwiftyJSON/issues/125 Using SwiftyJSON.swift file into your project must work fine
回答2:
As Carlos Garcia correctly pointed out, the problem is with compiling SwiftyJSON. In his provided link https://github.com/SwiftyJSON/SwiftyJSON/issues/125, check the solution by nunogoncalves. In a nutshell, you MUST use the closure JSON parameter at least once in the closure body. Here is what I did:
NetworkManager.sharedInstance.loadOrderDetails(187, onComplete: { (json, errorMessage) -> () in
json?["aaa"] //this useless line fixes the compiler crash
//the rest of your code here...
});
来源:https://stackoverflow.com/questions/27604758/xcode-swift-error-command-failed-due-to-signal-segmentation-fault-11