Xcode 7 beta swift应用程序在运行时因EXC_BAD_ACCESS错误而崩溃

时间:2015-06-24 07:25:26

标签: xcode swift

我有以下代码崩溃。

class PersonFactory {
  class var build: PersonInterface {
    get {
      return Person()
    }
  }
}

class Person: PersonInterface {
  var age: Int = 0

  func say(message: String) {
    print(message)
  }
}

protocol PersonInterface: class {
  var age: Int { get set }

  func say(message: String)
}

当我从view controller

运行以下行时崩溃了
PersonFactory.build.say("hello")

在以下行EXC_BAD_ACCESS上与var age: Int = 0崩溃。问题出现在Xcode 7 beta 4(7A165t)中。

请注意代码不会在Playground中崩溃,只有从应用程序调用时才会崩溃。以下是演示应用:https://github.com/exchangegroup/ProtocolCrashDemo

注意:定义PersonFactory,Person和PersonInterface的代码应位于单独的文件中,以免崩溃。

看起来像Swift 2.0的错误?我向Apple提交了一份错误报告。

更新

此问题已在Xcode 7.0 beta 5中修复。

2 个答案:

答案 0 :(得分:2)

你可以通过这样做来避免这种崩溃:

import Foundation

class PersonFactory<T: PersonInterface> {
    class var build: T {
        return T()
    }
}

class Person: PersonInterface {
    var age: Int

    required init() {
        age = 0
    }

    func say(message: String) {
        print(message)
    }
}

protocol PersonInterface {
    init()

    var age: Int { get set }

    func say(message: String)
}

let person: Person = PersonFactory.build
person.say("hello")

答案 1 :(得分:1)

最有可能的错误,因为我正在使用Xcode 6.3.2而且看起来很好。 enter image description here