我在 iPhone 应用程序中使用了一个名为 libmosquitto 的库。
该库是用 C 编写的。它接收推送通知并因此在线程中运行。
我想获取它接收到的数据,并将其显示在 UITableView 中,但是(我认为)我必须编写 libmosquitto 用作 C 函数而不是 Objective C 方法的回调,因此我无法访问“self”以执行: [self performSelectorOnMainThread:@selector(hideActivityViewer) withObject:nil waitUntilDone:NO];
任何人都有这样的问题,有没有其他方法可以更新用户界面?
在我的一个 Objective C 方法中,我称之为:
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);
}
谢谢