开发者社区> 问答> 正文

oss持续上传iOS端内存无法释放

我们在iOS平台上有一个直播功能,我们测试发现,在上传oss的部分上传的数据会一直存在在内存中无法释放。
-(void) updateMainifestOnServer : (NSData ) data : (NSString ) streamName : (NSString *)filename
{

//NSData *fileContent = [NSData dataWithContentsOfFile:self.manifestPath];
OSSPutObjectRequest * put = [OSSPutObjectRequest new];
put.bucketName = self.stream.bucket;
//put.objectKey = [@"file_test/" stringByAppendingFormat:@"%ld/live/%ld/%@",[self.stream getOwnerID],[self.stream getStreamID],filename];
put.objectKey = [self.stream.storage stringByAppendingString:filename];
put.uploadingData = data;
put.contentType = @"application/vnd.apple.mpegurl";
put.cacheControl =@"no-cache";
OSSTask * putTask = [_ossClient putObject:put];
__weak id weakself = self;
[putTask continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        NSLog(@"upload manifest success!");
    } else {
        NSLog(@"upload manifest failed, error: %@" , task.error);
    }
    [weakself s3RequestCompletedForFileName:filename];
    return nil;
}];

}
次方法每5秒执行一次,instrumens显示此处的fileContent没有释放,应该是OSSPutObjectRequest没有释放的缘故吧,大家给点思路吧。

展开
收起
zac_ji 2016-01-18 17:34:32 4593 0
1 条回答
写回答
取消 提交回答
  • 已解决。
    官方API默认提供的是直接把文件URL赋给uploadingFileURL,而我舍近求远使用了NSData。虽然NSData方法也可以,但是需要自己维护,及时释放。而直接使用URL,阿里云内部的API会帮我们维护NSData,无需手动释放。

    2019-07-17 18:25:12
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
OSS运维进阶实战手册 立即下载
《OSS运维基础实战手册》 立即下载
OSS运维基础实战手册 立即下载