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

objective-c - 当返回值是类型转换的父类时,方法的类型转换返回值?


                                            <p><p>我有类似的代码。</p>

<pre><code>MySubclassOfUIView *view = ;
</code></pre>

<p>UIPickerView 的<strong>viewForRow:forComponent</strong> 方法返回一个UIView。 MySubclassOfUIView 就是这样:UIView 的子类。</p>

<p>UIPickerView 委托(delegate)(此处未提及)使用 MySubclassOfUIView 对象数组来填充 UIPickerView 组件的行。因此,我知道 <strong>viewForRow:forComponent</strong> 方法实际上将返回指向 MySubclassOfUIView 类型对象的指针。</p>

<p>Xcode 给了我这个警告。</p>

<blockquote>
<p>Incompatible pointer types initializing &#39;MySubclassOfUIView*&#39; with an expression of type &#39;UIView*&#39;.</p>
</blockquote>

<p>所以我想我会对其进行类型转换以修复警告,这给了我这段代码。</p>

<pre><code>MySubclassOfUIView *view = (MySubclassOfUIView*);
</code></pre>

<p>警告消失了。</p>

<p>请原谅我摇摇欲坠的 C 和 Objective-C 技能,但我在做正确的事吗(就目前给出的上下文而言)?有没有其他更好的方法来处理这种情况?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>如果你完全确定它会返回一个<code>MySubclassOfUIView</code>,那么这样做是可以的。如果它有任何可能返回其他内容(例如您犯了错误并将错误的内容添加到数组中),那么您应该检查类型并使用临时变量。</p>

<pre><code>UIView *temp = ;
NSAssert(],]);
MySubclassOfUIView *theView = (MySubclassOfUIView*)temp;
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于objective-c - 当返回值是类型转换的父类时,方法的类型转换返回值?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/5851314/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/5851314/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: objective-c - 当返回值是类型转换的父类时,方法的类型转换返回值?