在过去的两天里,我一直试图弄清楚为什么这种简单的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)
}
使用仪器,我已经测试过删除所有共享的代码(返回的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
}
我犯了一个明显的错误吗?
答案 0 :(得分:1)
如果您的应用程序可以处理这些泄漏,则只需提交错误here,然后等待修复。
您可以看到here和here似乎很长一段时间以来,它们正在继承这些泄漏。这个问题S3 multipart upload memory leak仍未解决,并标记为错误,因此您需要等待这些问题得到解决。