W moim przypadku okazało się, że problem polegał na drugim użyciu tego słownika, gdy próbowałem pobrać z niego subdictionary. A dokładnie w tym kodzie:
var location: CLLocation? = nil
if let geometryDictionary = json["geometry"], locationDictionary = geometryDictionary["location"], latitude = locationDictionary["lat"] as? CLLocationDegrees, longitude = locationDictionary["lng"] as? CLLocationDegrees {
location = CLLocation(latitude: latitude, longitude: longitude)
}
Problem polegał na tym, że otrzymałem geometryDictionary i referencje locationDictionary bez określenia ich typu, więc kompilator zakłada, że są AnyObject. Nadal byłem w stanie uzyskać ich wartość jak ze słownika, więc kod zadziałał. Kiedy dodałem do nich typ, wycieki ustały.
var location: CLLocation? = nil
if let geometryDictionary = json["geometry"] as? [String : AnyObject], locationDictionary = geometryDictionary["location"] as? [String : AnyObject], latitude = locationDictionary["lat"] as? CLLocationDegrees, longitude = locationDictionary["lng"] as? CLLocationDegrees {
location = CLLocation(latitude: latitude, longitude: longitude)
}
Wyjaśnij, co masz na myśli przez nieszczelności – smac89
masz rację, ktoś z mojego zespołu po prostu zabrakło profilera na aplikacji pracowaliśmy nad i znalazłem podobny problem – smac89