菜鸟教程小白 发表于 2022-12-12 22:33:20

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


                                            <p><p>我有一个 Objective-C 类。我正在做的是我在我的 Objective-C 类中调用 C 函数 [这个 C 函数我在一个文件中实现,这是这个示例 ios 项目的一部分]。所有 C 函数都运行良好,目前没有问题。</p>

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

<p>C 文件:</p>

<pre><code>void my_int_func(int x);

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

<p>Objective-C 文件:</p>

<pre><code>void my_int_func(int x) // this is call back method
{
    printf( &#34;%d\n&#34;, x ); // working properly
    ; // I am unable to use self in this function.
}
</code></pre>

<hr/>

<p>其实我的要求是</p>

<p>我有 C 代码,可以执行 Voip 调用功能。
我正在从我的 Objective-C 代码中调用 C 函数。
如果接收方已断开调用,则我的 C 函数之一被调用并停止该过程。但我的 UI 仍然显示调用相关的 UI。我想忽略它。</p>

<p>在这里,我如何从 C 函数向我的 Objective-C 类发送通知以关闭 UIView。谁能帮帮我。</p>

<p>实际上我使用了函数指针,但它不起作用。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我也遇到了这个问题。我假设您正在为您的 VoIP 应用程序使用 PJSIP。 </p>

<p>您要做的是创建一个指向您希望向其发送消息的 Objective-C 类的指针。你已经知道你不能从你的 C 回调中调用 Objective-C 函数。 </p>

<p><code> 静态 YourObjCClass *objCClassPtr </code></p>

<p><code> @property (nonatomic, retain) YourObjCClass *class </code></p>

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

<p><code>objCClassPtr = class;</code></p>

<p>您现在可以使用 C 函数中的 <code> </code> 向 Objective-C 对象发送消息,就好像您会编写 <code> </code></p>

<p>你可以用同样的方式指向<code>self</code>。</p></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - 从 C 到 Objective-C 的回调方法,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/12193857/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/12193857/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - 从 C 到 Objective-C 的回调方法