菜鸟教程小白 发表于 2022-12-13 15:08:21

ios - 当变量为 nil 时创建编译器错误


                                            <p><p>当开发人员忘记在 LocalizedStrings 中输入键时,我需要触发自定义编译器错误,以提醒他这将导致应用程序将显示键而不是文本。我个人认为这很完美,但我被要求启动编译器错误,因为该应用程序有很多情况,并在开发人员心不在焉的情况下保护开发人员。 </p>

<p>假设接收 key 的方法是这样的:</p>

<pre><code>- (NSString *) localizedString:(NSString *)key {
HERE IS WHERE I WANT TO TRHROW THE COMPILER ERROR
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>如果您想要编译时错误,请查看使用 <code>_Nonnull</code> 注释参数:</p>

<pre><code>-(NSString *)localizedString:(NSString * _Nonnull)key
</code></pre>

<p>...并使用 <code>-Werror</code> 打开 <code>-Wnullable-to-nonnull-conversion</code> 警告以将其变为错误。这里要处理的主要问题是大量现有代码现在将由于其他地方的可空到非空转换而失败,这需要在整个源代码中大量使用注释。这可能不是一个可行的解决方案,但您至少可以调查一下。</p>

<p>如果您只想在 Debug模式下出现运行时错误,请使用 <code>NSAssert</code> 或 <code>NSParameterAssert</code>:</p>

<pre><code>NSParameterAssert(key != nil);
// OR:
NSAssert(key != nil, &#34;key must be non-nil&#34;);
// or just
NSAssert(key, &#34;key must be non-nil&#34;);
</code></pre>

<p>如果您总是想要运行时错误,请使用 <code>@throw</code> 或便捷方法抛出异常:</p>

<pre><code>if (!key) {
    ;
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 当变量为 nil 时创建编译器错误,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/43205806/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/43205806/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 当变量为 nil 时创建编译器错误