Ios 如果条件检查,则崩溃

Ios 如果条件检查,则崩溃,ios,swift,crash,crash-reports,Ios,Swift,Crash,Crash Reports,我在app store中有一个应用程序,基本上可以正常工作。我收到了一些碰撞报告,碰撞报告指出了一条线,如果条件得到检查。考虑到这可能是“打开可选值时出错”,我在检查之前实现了一个保护语句,甚至在if条件中输入了double nil check。但还是。。。没有游戏。它通过了guard语句并在if条件检查时崩溃 异常类型:EXC_断点(SIGTRAP) 有什么想法吗?这是我的代码: let offRoad = self.route?.offRoad ?? false guard UIApplic

我在app store中有一个应用程序,基本上可以正常工作。我收到了一些碰撞报告,碰撞报告指出了一条线,如果条件得到检查。考虑到这可能是“打开可选值时出错”,我在检查之前实现了一个保护语句,甚至在if条件中输入了double nil check。但还是。。。没有游戏。它通过了guard语句并在if条件检查时崩溃

异常类型:EXC_断点(SIGTRAP)

有什么想法吗?这是我的代码:

let offRoad = self.route?.offRoad ?? false
guard UIApplication.sharedApplication().applicationState == .Active && self.isFreeDrive != nil && self.route != nil else {
      return
}
if self.isFreeDrive ?? false && offRoad == false {   // this is the crash line
    // doing some stuff
}

您是否尝试在if中添加括号?例如:
如果((self.isFreeDrive??false)&!offRoad){…}
您也可以使用let添加保护,例如:
guard let freeDriver=self.isFreeDriver else{return}
没有尝试。将在下一版本中执行此操作。问题是,它只是偶尔发生,这让我觉得它可能与记忆有关。但仍然很奇怪,因为在这种情况下,必须在guard和if语句之间“释放”内存。parens应该不重要。你是否可能在一个闭包或后台线程中,而“self”已经被取消引用?@PEEJWEEJ我在后台线程中是的。但是当我检查self.route时,不应该在警卫声明中“挂起”零在那里。不管怎样,我还是愿意试一试。没关系。我该如何解决这个问题?[unowned self]???如果您在闭包中使用self,那么您对它有很强的引用(self)。为避免保留圆,应使用无主闭包或弱内闭包。如果isFreeDriver和route是属性,如果属性发生更改,则可以将
didSet{print(newValue)}
添加到monitore。是否尝试在If中添加括号?例如:
如果((self.isFreeDrive??false)&!offRoad){…}
您也可以使用let添加保护,例如:
guard let freeDriver=self.isFreeDriver else{return}
没有尝试。将在下一版本中执行此操作。问题是,它只是偶尔发生,这让我觉得它可能与记忆有关。但仍然很奇怪,因为在这种情况下,必须在guard和if语句之间“释放”内存。parens应该不重要。你是否可能在一个闭包或后台线程中,而“self”已经被取消引用?@PEEJWEEJ我在后台线程中是的。但是当我检查self.route时,不应该在警卫声明中“挂起”零在那里。不管怎样,我还是愿意试一试。没关系。我该如何解决这个问题?[unowned self]???如果您在闭包中使用self,那么您对它有很强的引用(self)。为避免保留圆,应使用无主闭包或弱内闭包。如果isFreeDriver和route是属性,那么如果您的属性发生了更改,您可以将
didSet{print(newValue)}
添加到monitore。