🐙

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

2022/04/23に公開

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