私はこれを読んだ:
アプリケーションでセカンダリスレッドを作成する場合は、独自の自動解放プールを提供する必要があります。自動解放プールとそれに含まれるオブジェクトについては、
iOS5Developerクックブックにあります。
ARCでコンパイルしています。私は多くのバックグラウンドスレッドを作成してきましたが、うまくやっているようです。私のバックグラウンドスレッドはどれも長時間実行されていません。これらのオブジェクトはすべて、たとえばメインスレッドの自動解放プールによって解放されるのでしょうか。または何?
これは私がバックグラウンドスレッドと呼ぶために行うことです:
+(void)doBackground:(void (^)())block
{
//DISPATCH_QUEUE_PRIORITY_HIGH
//dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0), ^{
dispatch_async(dispatch_get_global_queue(-2,0), ^{
block();
});
}
これをに変更する必要があります
+(void)doBackground:(void (^)())block
{
//DISPATCH_QUEUE_PRIORITY_HIGH
//dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0), ^{
dispatch_async(dispatch_get_global_queue(-2,0), ^{
@autoreleasepool{
block();
}
});
}