Я использую NSTimer
в своем приложении для iOS, разработанном в Xamarin. Приложение отлично работает на iOS 10 (iPhone 5S), но падает на моем iPad с iOS 9.3.5.
Почему это происходит и как я могу это исправить?NSTimer - работает на iOS 10, но не на iOS 9.3
Вот код:
timer = NSTimer.CreateScheduledTimer(0.3, true, delegate
{
List<String> keys = this.beaconRegions.Keys.ToList();
foreach (string identifier in keys)
{
this.locationManager.StopRangingBeacons((CLBeaconRegion)this.beaconRegions[identifier]);
this.locationManager.StopMonitoring(this.beaconRegions[identifier]);
this.locationManager.StartMonitoring(this.beaconRegions[identifier]);
this.locationManager.StartRangingBeacons(this.beaconRegions[identifier]);
}
});
А вот деталь журнала аварии:
4 CoreFoundation 0x21c9a234 0x21c72000 + 164404
5 iBeacon 0x0023564c wrapper_managed_to_native_ObjCRuntime_Messaging_objc_msgSend_intptr_intptr_double_bool_intptr (/<unknown>:1)
6 iBeacon 0x001e8ecc Foundation_NSTimer_CreateScheduledTimer_double_bool_System_Action_1_Foundation_NSTimer (NSTimer.g.cs:134)
7 iBeacon 0x001de5b4 iBeacon_LocationManager_turnOnMonitoring (LocationManager.cs:277)
8 iBeacon 0x001de2ac iBeacon_LocationManager_startMonitoringForBeacons (LocationManager.cs:250)
LocationManager.cs:277
- это строка кода, где у меня есть код для NStimer
.
Я не парень из xamarin, но мне интересно, переводит ли это на основе блока API NSTimer (см. ['schedTimer (withTimeInterval: repeat: block:)'] (https://developer.apple.com/reference/foundation/timer/2091889-scheduledtimer)), который был введен в iOS 10. Вам нужно использовать старый ' target'/'selector', если вы собираетесь поддерживать более ранние версии iOS. – Rob
@ Kyll ok получил его. –