Swift:
1.)
import MapKit
2.) Поскольку создание форматтера стоит дорого, лучше установить его в качестве свойства lazy. Таким образом, вы можете инициализировать средство форматирования только тогда, когда это необходимо, и повторно использовать средство форматирования, а не создавать новое.
lazy var distanceFormatter: MKDistanceFormatter = {
var tempDistanceFormatter = MKDistanceFormatter()
tempDistanceFormatter.unitStyle = .Abbreviated // .abbreviated in Swift 3
return tempDistanceFormatter
}()
3.)
let distanceString = self.distanceFormatter.stringFromDistance(yourDistance)
Из блога Ротема Блума: http://caught-in-a-web.blogspot.com/2008/05/best-practices-how-to-dispose-wcf.html
Рекомендации: как избавиться от клиентов WCF
Использование оператора using (Использование в Visual Basic) не рекомендуется для клиентов Dispose WCF. Это потому, что конец оператора using может вызвать исключения, которые могут маскировать другие исключения, о которых вам, возможно, нужно знать.
using (CalculatorClient client = new CalculatorClient())
{
...
} // this line might throw
Console.WriteLine("Hope this code wasn't important, because it might not happen.");
The correct way to do it is:
try
{
client.Close();
}
catch (CommunicationException)
{
client.Abort();
}
catch (TimeoutException)
{
client.Abort();
}
catch
{
client.Abort();
throw;
}
Поскольку ваша служба не будет обращаться к каким-либо неуправляемым ресурсам, почему бы не выпустить ее из области видимости и не позволить GC делать свое дело?