public override void DidEnterBackground(UIApplication application) { var subViews = mapViewController.View.Subviews; MKMapView mapView = subViews[0] as MKMapView; Console.WriteLine("mapView: {0}", mapView); var tempArray = mapView.Annotations; NSMutableArray annotations = new NSMutableArray(); Console.WriteLine("tempArray: {0}", tempArray.ToString()); for (int i = 0; i < tempArray.Length; i++) { if (tempArray[i].GetType() == typeof(MKUserLocation)) { Console.WriteLine("MKUserLocation: {0}", tempArray[i]); } else { Console.WriteLine("MKMapPoint added: {0}", tempArray[i]); annotations.Add(tempArray[i]); } } var documentDirectories = NSSearchPath.GetDirectories(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomain.User, true); string documentDirectory = documentDirectories[0]; string path = Path.Combine(documentDirectory, "annotations.archive"); Console.WriteLine("Path: {0}", path); bool success = NSKeyedArchiver.ArchiveRootObjectToFile(annotations, path); if (success) { Console.WriteLine("Saved Annotations {0}", annotations.ToString()); } }