すべて。私には方法があります:
-(void)connectToServer:(NSError**)error{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//bla bla bla code;
*error=[NSError bla bla bla];
}
}
しかし、その後、エラー変数は変更されません。そのブロック変数はありません。__block変数としてマーク(NSError **)エラーのこのメソッドを変更するにはどうすればよいですか。__block varibaleがローカル変数にのみ使用される場合はどうなりますか?
ここで、__block属性を持つ組織のローカル変数の問題を解決します。
-(void)connectToServer:(NSError**)error{
__block NSError *localError=*error;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//bla bla bla code;
localError=[NSError bla bla bla];
}
*error=localError;
}
しかし、このソリューションは私のようではありません。なぜなら、__ block NSError * localError =*errorを再宣言する必要があるからです。