プログレス バーが必要な単純な 1 回限りのタスクを用意します。OpenSSL には、そのために使用できる便利なコールバックがあります。
rsa=RSA_generate_key(bits,RSA_F4,progressCallback,NULL);
と
static void callback(int p, int n, void *arg) {
.. stuff
ただし、あまり苦労せずに ObjectiveC からこれを呼び出したいと思います。
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.mode = MBProgressHUDModeAnnularDeterminate;
hud.labelText = @"Generating CSR";
[self genReq:^(int p,int n,void *arg) {
hud.progress = --heuristic to guess where we are --
} completionCallback:^{
[MBProgressHUD hideHUDForView:self.view animated:YES];
}];
Genrec: を objC メソッドとして使用:
-(void)genReq:(void (^)(int,int,void *arg))progressCallback
completionCallback:(void (^)())completionCallback
{
.....
rsa=RSA_generate_key(bits,RSA_F4,progressCallback,NULL);
assert(EVP_PKEY_assign_RSA(pkey,rsa));
rsa=NULL;
....
completionCallback();
}
今完了コールバック(); 素晴らしく、期待どおりに機能します。しかし、進行状況のコールバックを抑えることができないコンパイラの警告/エラーが表示されます。
Passing 'void (^__strong)(int, int, void *)' to parameter of incompatible type 'void (*)(int, int, void *)'
興味があります - これを行う適切な方法は何ですか?
ありがとう、
Dw。