菜鸟教程小白 发表于 2022-12-12 17:49:53

ios - 从设备照片库中获取图像的内存警告


                                            <p><p>我使用以下代码从照片库中获取图像,在显示它之前调整它的大小收到内存警告。
由于内存压力,它也会被终止。</p>

<pre><code>-(void)readImages:(int)getAlbumImages
{

    imagesArray = [init];
    allImagesArray = [ init];

    ALAssetsLibrary *library = [ init];
    void (^assetEnumerator)( ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {
      if(result != nil) {
             if([ isEqualToString:ALAssetTypePhoto]) {
                        ];

                        NSURL *url= (NSURL*) [url];
                        [library assetForURL:url
                                 resultBlock:^(ALAsset *asset) {
                                     fullScreenImage]]];
                                     ;
                                     ;
                                 }
                              failureBlock:^(NSError *error){ NSLog(@&#34;test:Fail&#34;); } ];
                  }

                }
                else if(result == NULL){
                  ;
                }
            };

            NSMutableArray *assetGroups = [ init];
            void (^ assetGroupEnumerator) ( ALAssetsGroup *, BOOL *)= ^(ALAssetsGroup *group, BOOL *stop) {
                if(group != nil) {
                  ;
                  ;
                  NSLog(@&#34;Number of assets in group :%ld&#34;,(long));
                  NSLog(@&#34;asset group is:%@&#34;,assetGroups);
                }
                NSLog(@&#34; %d&#34;,);

            };

            assetGroups = [ init];

            [library enumerateGroupsWithTypes:ALAssetsGroupAll
                                 usingBlock:assetGroupEnumerator
                                 failureBlock:^(NSError *error) {NSLog(@&#34;A problem occurred&#34;);}];
      }
</code></pre>

<p>请帮忙。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>很明显,您不能将<em>所有</em>张照片作为<em>全屏图像</em>打开并存储在一个数组中,因为这会导致内存压力并最终导致内存故障,这会导致崩溃。</p>

<p>另外,声明</p>

<pre><code>;
</code></pre>

<p>可能有问题,因为它是系统方法的完成处理程序,因此不清楚它在哪个执行上下文中执行。这里,如果 <em>picsTbl</em> 是一个 <code>UITableView</code> 则必须是主线程。您应该确保确实如此。</p>

<p>您需要一种不同的方法来解决您的问题。具体来说,由于您可能正在处理大数据(给定设备受限),您必须确保您只处理 <em>一个</em> 图像,并且一次只将 <em>一个</em> 图像保留在内存中。</p>

<p>您可以了解如何顺序调用异步方法 - 即有效地序列化异步方法,这里:</p>

<p> <a href="https://stackoverflow.com/questions/20259733/force-async-tasks-to-run-in-sequence/20262312#20262312" rel="noreferrer noopener nofollow">Force async tasks to run in sequence</a> </p>

<p> <a href="https://stackoverflow.com/questions/20662908/ios-programming-using-threads-to-add-multiple-images-to-library/20670768#20670768" rel="noreferrer noopener nofollow">ios programming: Using threads to add multiple images to library</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 从设备照片库中获取图像的内存警告,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/20878847/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/20878847/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 从设备照片库中获取图像的内存警告