Последние два дня я пытался выяснить, почему эта простая настройка конфигурации AWSS3 может вызвать утечки памяти 5000+. Это код, который я запускаю в AppDelegate:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// SetUp AWS Config
let myIdentityPoolId = Constants.AWS_IDENTITY_POOL_ID
let credentialsProvider: AWSCognitoCredentialsProvider = AWSCognitoCredentialsProvider(regionType: .USWest2,
identityPoolId: myIdentityPoolId)
if let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider:credentialsProvider) {
AWSS3.register(with: configuration, forKey: "defaultKey")
}
return AWSMobileClient.sharedInstance().interceptApplication(application,
didFinishLaunchingWithOptions: launchOptions)
}
Используя инструменты, я протестировал удаление всего кода, которым я поделился (кроме return AWSMobileClient.sharedInstance (). InterceptApplication), и обнаружил, что у меня нет утечек памяти, но как только я добавляю его обратно, я получаю все утечки ... Что дает?
Если это поможет, я хочу перечислить объекты моей корзины AWS, которая работает со следующим кодом:
let listRequest: AWSS3ListObjectsRequest = AWSS3ListObjectsRequest()
let s3 = AWSS3.s3(forKey: "defaultKey")
listRequest.bucket = Constants.AWS_BUCKET
listRequest.prefix = Constants.SPECIAL_PREFIX
s3.listObjects(listRequest).continueWith { (task) -> AnyObject? in
}
Я делаю очевидные ошибки?
Если ваше приложение может работать с этими утечками, вы можете просто сообщить об ошибке здесь и дождаться исправлений.
Кажется, они наследуют эти утечки с давних пор, как вы можете видеть здесь и здесь. Эта проблема Утечка памяти при многокомпонентной загрузке S3 все еще открыта и помечена как ошибка, поэтому вам нужно подождать, пока она не будет исправлена.