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

ios - CocoaPods 库中的强 dispatch_queue_t


                                            <p><p>在可能使用 iOS 5.x/OS X 10.7 部署目标或更新的库构建的库中,我在正确定义 <code>dispatch_queue_t</code> 属性时遇到了问题。</p>

<p>在大多数情况下,我可以按照建议解决它 <a href="https://stackoverflow.com/a/24846028/1049134" rel="noreferrer noopener nofollow">here</a> :</p>

<pre><code>#if OS_OBJECT_HAVE_OBJC_SUPPORT // == 1 not really needed
@property (nonatomic, strong) dispatch_queue_t loggerQueue; // An Objective-C object
#else
@property (nonatomic, assign) dispatch_queue_t loggerQueue; // A C pointer
#endif
</code></pre>

<p>这在手动创建静态库或将文件直接包含在项目中时有效。</p>

<p>当此代码添加到 CocoaPods 库时,它会因 iOS 6+/OS X 10.8+ 部署目标而中断。
CocoaPods 正确设置部署目标,编译器确实设置 <code>OS_OBJECT_HAVE_OBJC_SUPPORT == 1</code> 并选择 <code>strong</code> 定义。但是我得到了 iOS 5.x/OS X 10.7 错误:</p>

<blockquote>
<p>Property with &#39;retain (or strong)&#39; attribute must be of object type</p>
</blockquote>

<p>我尝试比较 CocoaPods 和静态库之间生成的环境变量,但没有任何可疑之处。</p>

<p>现在我已经通过在使用 CocoaPods 构建时完全禁用 <code>strong</code> 定义来修补它:</p>

<pre><code>#if OS_OBJECT_HAVE_OBJC_SUPPORT &amp;&amp; !defined(COCOAPODS)
@property (nonatomic, strong) dispatch_queue_t loggerQueue; // Always disabled
#else
@property (nonatomic, assign) dispatch_queue_t loggerQueue;
#endif
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p> <a href="https://github.com/CocoaLumberjack/CocoaLumberjack/pull/420#issuecomment-67561238" rel="noreferrer noopener nofollow">Seems</a>就像旧的 CocoaPods 正在重新定义 <code>OS_OBJECT_USE_OBJC</code> 破坏 <code>OS_OBJECT_HAVE_OBJC_SUPPORT</code>。</p>

<p>我们收到了 <a href="https://github.com/CocoaLumberjack/CocoaLumberjack/blob/master/Classes/DDLog.h#L26" rel="noreferrer noopener nofollow">fixed</a>通过检查 <code>OS_OBJECT_USE_OBJC</code> 并使用更新的 CocoaPods。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - CocoaPods 库中的强 dispatch_queue_t,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/27267865/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/27267865/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - CocoaPods 库中的强 dispatch_queue_t