菜鸟教程小白 发表于 2022-12-12 09:16:10

ios - 当格式说明符错误地传递给方法时如何发出警告


                                            <p><p>假设我有一个返回 <code>BOOL</code> 的方法,例如:</p>

<pre><code>+(BOOL) isNewCar {
    //returns YES or NO
}
</code></pre>

<p>然后我在 <code>NSLog</code> 中使用这个方法:</p>

<pre><code>NSLog(&#34;Is my car new, the answer is %@&#34;, );
</code></pre>

<p>然后我得到编译器警告:</p>

<p> <a href="/image/pTyop.png" rel="noreferrer noopener nofollow"><img src="/image/pTyop.png" alt="enter image description here"/></a> </p>

<p>如果我忽略警告并运行,应用程序<strong>崩溃</strong>。
现在我有另一个名为 <code>printCar</code> 的方法,它接受变量参数,就像 <code>NSLog</code> 其实现是:</p>

<pre><code> -(void) printCar:(NSString *)msg, ... {
   NSString * contents;
   va_list args;
   va_start(args, msg);
   contents = [ initWithFormat:msg arguments:args];
   va_end(args);
   ;
}
</code></pre>

<p>当我使用上述方法时:</p>

<pre><code>];
</code></pre>

<p>编译器<strong>不</strong>生成警告。此外,应用程序崩溃。</p>

<p><strong>问题</strong>:如果像 <code>NSLog</code> 那样为我们的自定义方法提供了错误的格式说明符,有没有办法生成警告??</p>

<p>提前致谢!</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>是的,你需要<code>NS_FORMAT_FUNCTION</code>宏来做到这一点,如果你按Command然后点击<code>NSLog</code>方法,你也可以看到它</p>

<pre><code>void NSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2)
</code></pre>

<p>你的方法</p>

<pre><code>-(void) printCar:(NSString *)msg, ...
</code></pre>

<p>变成</p>

<pre><code>-(void) printCar:(NSString *)msg, ... NS_FORMAT_FUNCTION(1,2)
</code></pre>

<p>你也可以Command Click <code>NS_FORMAT_FUNCTION</code>查看更多细节</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 当格式说明符错误地传递给方法时如何发出警告,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/33099891/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/33099891/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 当格式说明符错误地传递给方法时如何发出警告