1

Apple のサンプル コードを使用して、UIPageViewController を使用して画像を表示しようとしています。新しいフォト キット: PHAsset https://developer.apple.com/library/ios/samplecode/MyImagePicker/Introduction/Intro.html#/ /apple_ref/doc/uid/DTS40010135 PHImageManagerMaximumSize で写真をスワイプすると、50 枚の写真の後、アプリがクラッシュし、「assetsd が中断または停止しました」と表示されることがわかりました。しかし、小さいターゲット サイズ (画面と同じサイズ) を要求すると、クラッシュの可能性は低くなります。アプリのどこかでメモリ リークが発生しているのか、それともレンダリング システムに何か問題があるのでしょうか? 圧縮と解凍は多くのページを使用しているようです。誰か私を見て手伝ってくれませんか?

- (void)displayImage:(PHAsset*)asset
{
 [self.imageView removeFromSuperView]
 self.imageView = nil;
 [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:PHImageManagerMaximumSize contentMode:PHImageContentModeAspectFit options:nil resultHandler:^(UIImage *result, NSDictionary *info) {

        self.imageView = [[UIImageView alloc] initWithImage:result];
        self.imageView.contentMode = UIViewContentModeScaleAspectFit;
        // self is a scrollView    
        [self addSubview:self.imageView];
    }];
}

------ コンソールにログイン ----------

2015-02-27 22:35:20.613 XXX [2831:145514] ImageViewController、-[ImageViewController didReceiveMemoryWarning] 2015-02-27 22:35:22.111 XXX [2831:145558] assetsd への接続が中断されたか、assetsd が停止しました

------- クラッシュログ ----------

空きページ: 1361 アクティブなページ: 26954 非アクティブなページ: 13499 投機的なページ: 40 スロットリングされたページ: 0 パージ可能なページ: 0 有線ページ: 59258 ファイルに裏打ちされたページ: 11321 匿名ページ: 29172 圧縮: 6474001 Compressor: 212409 ページ サイズ: 16384 最大プロセス: iGather

プロセス名 | | | CPU 時間| rページ| パージ可能| 最近の最大| 生涯最大| fd | 【理由】 | (州)

assistant_servic <97db64323f2e364ea0af497680126850> 0.485 1451 0 - 4111 50 [vm-pageshortage] (daemon) (idle) medialibraryd <6a42c5e99f153b4baa0992e9902bee82> 0.296 1037 0 - 2072 50 [vm-pageshortage] (daemon) (idle) WirelessRadioMan 0.077 285 0 - 890 50 [ VM-PagesHortage](デーモン)(アイドル)AWDD <58036E1703903EE798A8803DE204C300> 0.070 402 0-1043 50 [VM-Pageshortage](daemon)(idle)assetsd <276c271c5b073f58bf87c4828282828282828282828282828282828282828282828282828282828282828282827アイドル) 販売 <18863ab32c7634d5b7f200821acffd06> 0.030 193 0 - 696 50 [vm-pageshortage] (daemon) passd <56971afa88b53f05a37688cad47b4160> 0.243 630 0 - 2384 50 [vm-pageshortage] (daemon) nfcd <59e46913bec838d989d5bed82cb05791> 0.023 184 0 - 624 50 [vm-pageshortage] (デーモン) biometrickitd <71607be9393c366eb1bbe281256fde77> 0.141 273 0 - 841 50 [vm-pageshortage] (デーモン) debugserver 0.306 207 0 - 629 50 [vm-pageshortage] (デーモン) MobileMail <4b48abd990e93dbea47db1cbf328.957 1496 0 - 4063 50 [vm-pageshortage] (再開) (連続) lsd 1.213 364 0 - 1032 50 [vm-pageshortage] (デーモン) tccd 0.132 238 0 - 593 50 [vm-pageshortage] (デーモン) kbd <8c8bded31cf73db19096c24a9a9 > 0.116 344 0 - 1447 50 [vm-pageshortage] (デーモン) iGather 3.610 23061 0 - 21099 50 [vm-pageshortage] (最前面) (再開) ...213 364 0 - 1032 50 [vm-pageshortage] (デーモン) tccd 0.132 238 0 - 593 50 [vm-pageshortage] (デーモン) kbd <8c8bded31cf73db2b44aa996c0e90921> 0.116 344 0 - 1447 50 [vm-pageshortage] (atherda 3.061) 0 - 21099 50 [vm-pageshortage] (最前面) (再開) ...213 364 0 - 1032 50 [vm-pageshortage] (デーモン) tccd 0.132 238 0 - 593 50 [vm-pageshortage] (デーモン) kbd <8c8bded31cf73db2b44aa996c0e90921> 0.116 344 0 - 1447 50 [vm-pageshortage] (atherda 3.061) 0 - 21099 50 [vm-pageshortage] (最前面) (再開) ...610 23061 0 - 21099 50 [vm-pageshortage] (最前面) (再開) ...610 23061 0 - 21099 50 [vm-pageshortage] (最前面) (再開) ...

4

1 に答える 1

2

これを確認するには必ずInstrumentsを使用する必要があります。

あなたと同じように、ユーザーがズームインして写真を詳細に調べることができるように、可能な限り最高の品質の画像をユーザーに提供したかった. N枚の写真をグリッドに表示します。これらのアセットへのすべての参照を削除しても、次の N のセットがロードされる前に解放されないことがわかりました。N * 2 がメモリ内にある短い遷移でアプリがクラッシュしないように、メモリ使用量を半分に削減する必要がありました。

もちろん、メモリ使用量がますます単調になっている場合は、コードのどこかにそれらの画像への参照が残っている可能性があります。再び、楽器。

于 2015-03-06T21:53:41.567 に答える