🐙

Project 16 of 100 Days of Swift in iOS15 学習記録

に公開

100 Days of Swiftを勉強しているうちに
自分が出会った問題と解決方法を記録します

環境

Xcode 13.3.1
iPhone SE3 iOS 15.4

アプリを背景に隠すと、XcodeにCrashが発生してしまう


アプリが起動しているうちに、Homeボタンを押してアプリを背景に隠すと
Xcodeには上図のようなエラーが出てしまいます

その解決方法は、MapViewのIBOutlet変数をweak指定したらOKです

まずはweakというキーワードを追加しましょう

viewController.swift
class ViewController: UIViewController, MKMapViewDelegate {

-	@IBOutlet var mapView: MKMapView!
+	@IBOutlet weak var mapView: MKMapView!
    
	// ほかのコード...
}

weakを指定すると、mapViewがオプショナルになりますので
変数を利用する場合はmapViewではなくてmapView?を使うことになります

viewController.swift
override func viewDidLoad() {
	// ほかのコード...
	
-	mapView.addAnnotations([london, oslo, paris, rome, washington])
-       mapView.region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 51.5, longitude: 0), span: MKCoordinateSpan(latitudeDelta: 25, longitudeDelta: 25))
+	mapView?.addAnnotations([london, oslo, paris, rome, washington])
+       mapView?.region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 51.5, longitude: 0), span: MKCoordinateSpan(latitudeDelta: 25, longitudeDelta: 25))

	// ほかのコード...
}

最後にビルド、Crashがなくなることを確認します

Discussion