2017-06-20 3 views
0

私は写真スライドショーアプリを作成しています。 マイアプリの流れ: ユーザーを選択し、フォト資産>(100 +以上)資産から ロード画像>(表示画像サイズ) セットのImageViewの映像や画像にCIFilterを追加し、スライドCIImage with CGImage memory

質問: 私はCIImageオブジェクトを作成するときCGImageからメモリが急速に成長しており、イメージ数が100以上になると、アプリケーションがクラッシュします。 しかし、私は作成コードを削除することは奇妙です、アプリは正常に動作します。

誰かが私を助けることができますか?

よりコード:

- (void)loadDisplayImagesWithCompletion:(void (^)(NSArray *images))completion { 
    dispatch_async(dispatch_queue_create("PhotosEditViewController_loadImageQueue", nil), ^{ 

     __block NSMutableArray *images = [NSMutableArray array]; 
     __block int handleCount = 0; 
     __weak PhotosEditViewController *weakSelf = self; 

     for (PHAsset *asset in self.photoAssets) { 
      [KPPhotoManager requestImageForAsset:asset targetSize:self.contentView.frame.size completeBlock:^(UIImage *image) { 

       [images addObject:image]; 

       @autoreleasepool { 
        CIImage *ciImage = [CIImage imageWithCGImage:[image CGImage]];//memory growing up 
       } 
      }]; 
     } 
    }); 
} 

// KPPhotoManager

+ (void)requestImageForAsset:(PHAsset*)asset targetSize:(CGSize)size completeBlock:(void (^)(UIImage *image))completeBlock 
    { 
     [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:size contentMode:PHImageContentModeAspectFill options:[self createImageRequestOptions] resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) { 
      completeBlock(result); 
     }]; 
    } 
+0

なぜ100時間かけて画像を作成するのですか? –

+0

写真のスライドショーを行う、たぶん0.1sの画像を表示する –

答えて

0

私はあなたのコードをコピーし、新しいプロジェクトを作成しました。私は10000に呼び出しの数を増加させ、すべてのメモリがよく見えるを検査します。それは少しジャンプするが、膨らまない。

私も使って、画像のロードを強制しようとした:

for (int i=0; i<10000; i++) { 
    @autoreleasepool { 
     UIImage *image = [UIImage imageWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"image2.png"]]; 
     [self createFilterImageWithImage:image]; 
    } 
} 

、それはまだメモリを膨らまはありません。

どのようにあなたのメモリリークを調べていますか?メモリ消費量を見ていますか?プロジェクトやファイルにARCを無効にしているなどの詳細はありますか?

+0

hd画像を読み込もうとすると1920x1920 –

+0

HD画像を読み込もうとするとサムネイルのように表示されます –

+0

@晓晓航1513×1087 。 –