我的代码似乎由于无限循环而崩溃,但我找不到错误。
有人能帮我查一下密码吗?
这是我的控制器:

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
    for touch in touches{
        let location = touch.location(in: self.view)
        let x = Float(location.x)
        let y = Float(location.y)
        let newTouch = Touch(latitude: x,longitude: y)
        TouchService().addTouch(touch: newTouch, grid: _grid)
    }
}

我的模特:
import Foundation

class Touch {

    var _lat: Float
    var _long: Float
    var _startingPoint: Touch

    init(latitude lat: Float, longitude long: Float){
        self._lat = lat
        self._long = long
        self._startingPoint = Touch(latitude: lat, longitude: long)
    }
}

我想我使用init()函数的方式有问题。
提前表示问候和感谢,
克里斯

最佳答案

问题
初始值设定项创建无限循环。

//Touch(latitude: lat, longitude: long) calls the initializer again.
//Since you are inside the initializer, it creates an infinite loop.
self._startingPoint = Touch(latitude: lat, longitude: long)

评论一下,你就会明白了。
解决方案
为值(组合)创建单独的类或结构。
class AngularLocation {
    var _lat: Float
    var _long: Float


class Touch {
    var destination: AngularLocation
    var startingPoint: AngularLocation

根据你的需要调整一下。

关于ios - 每当我尝试创建特定类的实例时,整个应用都会崩溃(EXC_BAD_ACCESS),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49386246/

10-14 13:27
查看更多