菜鸟教程小白 发表于 2022-12-13 09:20:47

ios - 将静态 void * 转换为 NSObject*


                                            <p><p>我有更多像这样的常量:</p>

<pre><code>static void * MyContext = &amp;MyContext;
</code></pre>

<p>现在我想发布一个包含在其 userInfo 字典中的上下文的 NSNotification,但我在将其转换为 NSObject* 并将其放入 NSDictionary 时遇到问题。我正在使用 __bridge 进行强制转换,但我在运行时得到 EXC_BAD_ACCESS。</p>

<p>将 void* 转换为 NSObject* 是否有一些限制?唯一不会崩溃的强制转换是 __bridge_transfer 但是在添加到字典时它会崩溃。我用完了选项,正在考虑完全放弃 void* 并改用 NSString*。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>你不能<em>cast</em>一个任意的<code>void</code>指针指向<code>NSObject</code>,但是你
可以<em>包装</em>到一个<code>NSValue</code>对象</p>

<pre><code>static void * MyContext = &amp;MyContext;
NSValue *contextValue = ;
</code></pre>

<p>并在稍后检索指针</p>

<pre><code>void *context = ;
</code></pre>

<p>或者,使用 <code>NSString</code> 对象作为上下文</p>

<pre><code>static NSString *MyContext = @&#34;com.company.mycontext&#34;;
</code></pre>

<p>无需任何桥接。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 将静态 void * 转换为 NSObject*,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/31649810/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/31649810/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 将静态 void * 转换为 NSObject*