iPhone アプリで libmosquitto というライブラリを使用しています。
ライブラリは C で書かれています。プッシュ通知を受け取るため、スレッドで実行されます。
受信したデータを受け取り、それを UITableView に表示したいのですが (と思います) libmosquitto が Objective C メソッドではなく C 関数として使用するコールバックを作成する必要があるため、「self」にアクセスすることはできません。 : [self performSelectorOnMainThread:@selector(hideActivityViewer) withObject:nil waitUntilDone:NO];
このような問題を抱えている人はいますか? UI を更新する別の方法はありますか?
私のObjective Cメソッドの1つの内部から、これを呼び出します:
mosquitto_message_callback_set(mosq, my_message_callback);
my_message_callback は次のように定義されます。
void my_message_callback(void *obj, struct mosquitto_message *message)
{
NSLog(@"Do this thing:");
if(message->payloadlen){
const char *payload = (const char *)message->payload;
[array addObject:[NSString stringWithUTF8String: payload]];
//[self performSelectorOnMainThread:@selector(updateTable) withObject:nil waitUntilDone:NO];
//printf("%s %s\n", message->topic, message->payload);
}else{
//printf("%s (null)\n", message->topic);
}
//fflush(stdout);
}
ありがとう