iphone - 从 C 到 Objective-C 的回调方法

标签 iphone objective-c ios c

我有一个 Objective-C 类。我正在做的是在我的 objective-C 类中调用 C 函数 [我在一个文件中实现的这个 C 函数,它是这个示例 ios 项目的一部分]。所有 C 函数都工作正常,到目前为止没有问题。

当我尝试调用 C 文件中的异步函数时,该函数将在一段时间后响应 objective-c 类。我在 C 中调用了函数指针,它在 Objective-C 类中被正确触发。请检查以下代码片段。我想对回调方法执行一些与 UI 相关的操作。那可能吗 ?如果否,还有其他方法吗?你能尽快给我回复吗?谢谢。

C 文件:

void my_int_func(int x);

void test_asyn_fun ()
{
    /* This code is for Sleep logic */
    for (int i=0; i<50000; i++) {
        // sleep
    }
    /* Sleep End */
    void (*foo)(int);
    foo = &my_int_func;
    foo(25);
}  

Objective-C 文件:

void my_int_func(int x) // this is call back method 
{
    printf( "%d\n", x ); // working properly 
    [self anyMethodInMyClass]; // I am unable to use self in this function.
}

其实我的要求是

我有 C 代码可以执行 Voip 调用功能。 我正在从我的 objective-C [iOS] 代码中调用 C 函数。 如果调用已被接收者断开连接,我的 C 函数之一将被调用并停止该过程。但是我的用户界面仍然显示调用相关的用户界面。我想驳回这一点。

在这里,如何从 C 函数向我的 objective-c 类发送通知以关闭 UIView。任何人都可以帮助我。

实际上我使用了函数指针,但它不起作用。

最佳答案

我也遇到了这个问题。我假设您正在为您的 VoIP 应用程序使用 PJSIP。

您要做的是创建一个指向您要向其发送消息的 Objective-C 类的指针。您已经意识到无法从 C 回调中调用 Objective-C 函数。

静态 YourObjCClass *objCClassPtr

@property (nonatomic, retain) YourObjCClass *class

初始化所述类时,让静态指针指向 Objective C 对象的指针。 (指向对象指针的指针)

objCClassPtr = class;

您现在可以从您的 C 函数使用 [objCClassPtr message] 向 Objective-C 对象发送消息,就好像您将编写 [class message]

你可以用同样的方式指向self

关于iphone - 从 C 到 Objective-C 的回调方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12193857/

相关文章:

ios - 来自用户名和密码的基本身份验证 header 在 AFNetworking 2.0 中不起作用

objective-c - Objective-C "Bad URL"错误

iphone - 从 NSData 创建 UiImage

iphone - UIUpgradeOtherBundleIdentifier ...未找到文档

ios - NSThread 用于并发操作

ios - 如何在 UITableViewCell 中调用 viewDidLoad?

objective-c - 使用 SecKeychainFindGenericPassword 获取机场网络密码

iphone - 如何从 UIWebView 获取最后的 HTTP 状态代码?

iphone - 是否可以将订阅与应用内购买绑定(bind)到 iTunes 帐户?

iphone - 动态实例命名