mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
49 lines
979 B
Swift
49 lines
979 B
Swift
// RUN: %target-run-simple-swift
|
|
// REQUIRES: executable_test
|
|
|
|
protocol MyClassDelegate: class {
|
|
func didFindCureForCancer()
|
|
}
|
|
|
|
|
|
class MyClass {
|
|
|
|
weak var delegate: MyClassDelegate?
|
|
|
|
init() {}
|
|
|
|
func findCure() {
|
|
// Crashes here with EXC_BAD_ACCESS. Why? -- Note that it also crashes if I replace the following line with `if let d = delegate { d.didFindCureForCancer() }`
|
|
delegate?.didFindCureForCancer()
|
|
}
|
|
|
|
deinit { print("MyClass died") }
|
|
}
|
|
|
|
|
|
class AppDelegate: MyClassDelegate {
|
|
|
|
func application() -> Bool {
|
|
print("starting")
|
|
let cureFinder = MyClass()
|
|
cureFinder.delegate = self
|
|
cureFinder.findCure()
|
|
|
|
return true
|
|
}
|
|
|
|
func didFindCureForCancer() {
|
|
print("about time...")
|
|
}
|
|
|
|
deinit { print("AppDelegate died") }
|
|
}
|
|
|
|
_ = {
|
|
AppDelegate().application()
|
|
}()
|
|
// CHECK-LABEL: starting
|
|
// CHECK-NEXT: about time...
|
|
// CHECK-NEXT: MyClass died
|
|
// CHECK-NEXT: AppDelegate died
|