Swift 由于信号:中止陷阱:6,命令失败
从Xcode 7和Swift 2.0开始,我得到了上面的错误,如这里显示的屏幕截图所示: 我不知道这是从哪里来的,清理和删除派生数据不起作用 还有其他人遇到这个问题吗 项目设置: 目标设置:Swift 由于信号:中止陷阱:6,命令失败,swift,xcode,Swift,Xcode,从Xcode 7和Swift 2.0开始,我得到了上面的错误,如这里显示的屏幕截图所示: 我不知道这是从哪里来的,清理和删除派生数据不起作用 还有其他人遇到这个问题吗 项目设置: 目标设置: 我在所有Xcode 6.3项目中都遇到了同样的问题,我是在Xcode 7.0中打开的。 我创建了一个新项目,复制了我所有的源文件和资源,所有的工作都没有这个编译器错误。 我认为这与项目设置有关。 我将Swift编译优化关闭为“无”,陷阱6消失了。也许还有其他的设置也会产生问题,但对我来说就是这样 错误
我在所有Xcode 6.3项目中都遇到了同样的问题,我是在Xcode 7.0中打开的。 我创建了一个新项目,复制了我所有的源文件和资源,所有的工作都没有这个编译器错误。 我认为这与项目设置有关。 我将Swift编译优化关闭为“无”,陷阱6消失了。也许还有其他的设置也会产生问题,但对我来说就是这样 错误
覆盖函数observeValueForKeyPath(keyPath:(字符串!),对象:(AnyObject!)?,更改:([NSObject:AnyObject]!)?,上下文:UnsafeMutablePointer)
嗯
重写函数observeValueForKeyPath(键路径:String?,对象对象:AnyObject?,更改:[NSObject:AnyObject]?,上下文:UnsafeMutablePointer)
在我的例子中,是将函数中的参数值设置为nil导致了错误
之前:
public func comparableValidator<T: Comparable>(minValue : T? = nil, maxValue : T? = nil, value: T) -> Void {
if let min = minValue {
_assertFunc(min <= value, "\(value) must be at least \(min)")
}
if let max = maxValue {
_assertFunc(max >= value, "\(value) must be at most \(max)")
}
}
for (key,value) in hash{
count += value.count
}
public func compariablevalidator(minValue:T?=nil,maxValue:T?=nil,value:T)->Void{
如果让min=minValue{
_assertFunc(最小值=值,“\(值)必须最多为\(最大值)”)
}
}
之后:
public func comparableValidator<T: Comparable>(minValue : T?, maxValue : T?, value: T) -> Void {
if let min = minValue {
_assertFunc(min <= value, "\(value) must be at least \(min)")
}
if let max = maxValue {
_assertFunc(max >= value, "\(value) must be at most \(max)")
}
}
for (_,value) in hash{
count += value.count
}
public func compariablevalidator(minValue:T?,maxValue:T?,value:T)->Void{
如果让min=minValue{
_assertFunc(最小值=值,“\(值)必须最多为\(最大值)”)
}
}
我能够用Xcode 7.0 beta版(7A120f)中创建的全新项目简单而一致地再现这一点。请注意,这个问题可能比示例更广泛,但对我来说,只需在新项目中添加一行代码,这是100%可重复的。这个问题似乎也只适用于iOS,而不是OSX,至少在本例中是这样。已经向苹果公司提交了缺陷报告21376523
class GameViewController: UIViewController {
var p = SCNVector3Zero
class GameViewController: UIViewController {
var p = SCNVector3()
class GameViewController: UIViewController {
var p = SCNVector4Zero
在我的例子中,这是因为我在泛型类中嵌套了一个枚举。现在,奇怪的是,当我将问题隔离到BaseDao2中时,编译器告诉了我正确的错误,但在我真正的BaseDao实现中(包含更多内容),它抛出了“陷阱6” 当我有这个:
class BaseDao2<T>: InjectRestSession{
enum DaoError2: ErrorType{
case FAILED_RESPONSE(String)
case INVALID_RESULT(String)
case FAIL_TO_LIST, FAIL_TO_GET
}
func get() -> T?{
return nil
}
}
class BaseDao2:InjectRestSession{
枚举DAORROR2:错误类型{
案例失败\u响应(字符串)
大小写无效\u结果(字符串)
案例列表失败,获取失败
}
func get()->T{
归零
}
}
无论如何,在我的例子中,我将DAO错误从BaseDao和编译的所有内容中移出。无论如何,我的感觉是“陷阱6”是某些东西无法编译的东西,编译器感到困惑。从一个简单的案例开始,通过获得正确的编译错误,将您认为可能导致问题的原因添加回去,有助于识别问题。换句话说,您必须对swift编译器保持温和 这就是我犯错误的原因 之前:
public func comparableValidator<T: Comparable>(minValue : T? = nil, maxValue : T? = nil, value: T) -> Void {
if let min = minValue {
_assertFunc(min <= value, "\(value) must be at least \(min)")
}
if let max = maxValue {
_assertFunc(max >= value, "\(value) must be at most \(max)")
}
}
for (key,value) in hash{
count += value.count
}
之后:
public func comparableValidator<T: Comparable>(minValue : T?, maxValue : T?, value: T) -> Void {
if let min = minValue {
_assertFunc(min <= value, "\(value) must be at least \(min)")
}
if let max = maxValue {
_assertFunc(max >= value, "\(value) must be at most \(max)")
}
}
for (_,value) in hash{
count += value.count
}
它不喜欢钥匙从未在任何地方使用过。我不知道为什么它会导致构建失败。我通过在目标(而非项目)设置中的“Swift编译器-代码生成”菜单下将优化级别设置为“无”,成功地构建了我的项目。请参见下面的屏幕截图
这不应该是一个永久的解决方案,因为它使ipa的大小增加了一倍多。当Xcode 7从beta版出来时,应该可以重新打开优化功能。在我的例子中,我使用了带有可选方法的@objc协议,当我在swift类中调用它的方法时,我得到了那个错误,从协议中的函数中删除可选关键字后,错误就消失了 之前(有错误): 之后:
@objc protocol SomeDelegate:NSObjectProtocol{
func someDelegateMethod()
}
class MySwiftClass{
func notifyMyDelegate(){
mydelegate?.someDelegateMethod()
}
}
@objc func didConnectWithSession() {
//context!.stream.disconnectAfterSending()
}
对我来说。。我修改了@objc函数的内容,如下所示: 之前:
@objc func didConnectWithSession() {
context!.stream.disconnectAfterSending()
}
之后:
@objc protocol SomeDelegate:NSObjectProtocol{
func someDelegateMethod()
}
class MySwiftClass{
func notifyMyDelegate(){
mydelegate?.someDelegateMethod()
}
}
@objc func didConnectWithSession() {
//context!.stream.disconnectAfterSending()
}
这导致了错误。我通过删除整个函数解决了这个问题。我在XCode 7 Beta 5上也遇到了这个错误。在我清理构建之后,我得到了另一个错误,说我的一个类不符合我刚刚更改的协议。在我解决了这个问题之后,它会构建。我所做的协议更改是将方法的两个参数类型从
Int
更改为Int32
在一个失败的初始值设定项中使用do try catch时,我收到了以下消息:
public init?() {
do {
...
super.init(superParam: try getParamForSuper())
...
} catch {
...
}
}
将try调用移动到自己的局部变量时编译成功:
public init?() {
do {
...
let superParam = try getParamForSuper()
super.init(superParam: superParam)
...
} catch {
...
}
}
就我而言
编译器会给我以下信息:
Incorrect number of arguments passed to called function!
%4 = call %swift.type* @_T015SimplifiedCoder6StructVMa() #1, !dbg !3112
<unknown>:0: error: fatal error encountered during compilation; please
file a bug report with your project and the crash log
<unknown>:0: note: Broken function found, compilation aborted!
致:
typealias StructType=Struct
CanGetClass的扩展试图对不完整的类型调用getClass。我是在什么时候收到的:
protocol ProtocolA {
associatedtype BType: ProtocolB
}
protocol ProtocolB {
associatedtype AType: ProtocolA
}
在
typealias StructType = Struct<Int>
protocol ProtocolA {
associatedtype BType: ProtocolB
}
protocol ProtocolB {
associatedtype AType: ProtocolA
}
class C: ... {
}
extension C: P {
}
private protocol P: class {
}
func speacialAdd(_ num1: Int, to num2: Int){
func specialMultiply(_ digit1: Int, with digit2: Int = num2){ // SOURCE OF PROBLEM
print(digit2)
print(digit1)
}
specialMultiply(5)
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print(speacialAdd(5, to: 6))
}
}
func specialMultiply(_ digit1: Int, with digit2: Int = num2) // ERROR
func specialMultiply(_ digit1: Int, with digit2: Int) // OK
func specialMultiply(_ digit1: Int, with digit2: Int = 6) // OK
let dict = mainDict as [String:String]
let dict = mainDict as! [String:String]
let activityVC = ...
guard let activityVC = activityVC else { return }