Я разрабатываю дополнительный модуль GPS для приложения в WinDev.WinDev поддерживает Swift-код, но только метод, исключающий использование классов и глобальных переменных.Вот что я сделал (в основном на основе Apple doc):
import Foundation
import CoreLocation
import UIKit
class mod_GPS : NSObject, CLLocationManagerDelegate {
var distance = Double()
var location_last : [CLLocation] = []
let locationManager = CLLocationManager()
func startReceivingLocationChanges() {
// Do some stuff (basically what is write on doc)
}
internal func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let lastLocation = locations.last!
if (location_last.count != 0){
distance = distance + lastLocation.distance(from: location_last[0])
location_last[0] = lastLocation
}else{
distance = 0
location_last.append(lastLocation)
}
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
//Same
}
}
Итак, у нас есть некоторый код для создания объекта и подсчета расстояния при перемещении пользователя.Но это не может иметь дело с WinDev.Проблема в следующем: «let locationManager = CLLocationManager ()», которые должны быть глобальными.Поэтому мне было интересно, есть ли способ избежать глобальной переменной.
Сначала я пытаюсь что-то вроде этого: часть быстрой записи на диск при каждом вызове LocationManage (didUpdateLocation) и часть в WinDev считывают значениекогда хотел.Но это не решает проблему, потому что мне все еще нужно инициировать переменную locationManager в части WinDev.Затем я думаю об анонимном классе, который существует в Java, но, кажется, отсутствует в быстром и объективном C.
Более того, сообщество разработчиков WinDev и документация полностью АФК, так что я не ожидал, что в этом поможет.Я явно не знаю, как сделать эту часть.Если у кого-то есть и идеи или советы ... Буду рад их услышать.