バックグラウンドでタスクを実行し、メイン スレッドでブロックを呼び出すメソッドを実装しようとしています。
+ (void)migrateStoreWithCompletionHandler:(MigrationControllerCompletion)completion
{
MigrationController *controller = [[MigrationController alloc] initWithCompletionBlock:completion];
[controller migrateStore];
}
これは-initWithCompletionBlock:
方法です:
- (id)initWithCompletionBlock:(MigrationControllerCompletion)completion
{
self = [super init];
if (self)
{
_completion = [completion copy];
}
return self;
}
バックグラウンド作業は で行われ-migrateStore
ます。問題は、ARCcontroller
が[controller migrateStore]
. はブロックに保持されているオブジェクトであるためcontroller
、呼び出すことはできません。この問題を回避する方法について何か提案はありますか?