2
NSData * buffer = [fileHandle readDataOfLength:chunkSize];
                while ([buffer length] > 0)
                {
                    [streamBIG writeData:buffer];
                    offset += [buffer length];

                    [fileHandle seekToFileOffset:offset];
                    buffer = [fileHandle readDataOfLength:chunkSize];
                }

これらの特定のプロセスを使用して、25〜30 MBのファイルを1つ以上圧縮しますが、メモリが増加します。つまり、すべてのファイルが書き込まれなくなるまでライブバイトが継続的に増加します。これにより、アプリがクラッシュします。

4

1 に答える 1

2

自動リリースプールでこのように試してください

               NSData * buffer = [fileHandle readDataOfLength:chunkSize];
                while ([buffer length] > 0)
                {
                    @autoreleasepool
                    {
                    [streamBIG writeData:buffer];
                    offset += [buffer length];

                    [fileHandle seekToFileOffset:offset];
                    buffer = [fileHandle readDataOfLength:chunkSize];
                    }
                }

それが動作します...

于 2013-03-20T09:08:43.513 に答える