菜鸟教程小白 发表于 2022-12-11 22:43:27

ios - 通过引用(指针)传递与iOS对象冲突?


                                            <p><p>我有几个 UITableView/s 和 UILabel/s 的 View 。我正在以编程方式创建它们(即不使用 NIB)。</p>

<p>我已经在一个带有签名的方法中合并了 tableView 和标签的创建:</p>

<pre><code>- (void) CreateTableView:(UITableView*) outTableView andLabel:(UILabel*)OutLabel AtFrame:(CGRect) frame{
CGRect labelFrame = frame;
labelFrame.origin.x = LABEL_LEFT_ALIGNMENT;
labelFrame.origin.y -= LABEL_TOP_ALIGNMENT;
labelFrame.size.height = LABEL_HEIGHT;
outLabel = [ initWithFrame:labelFrame];
[ addSubview:outLabel];

outTableView = [ initWithFrame:frame style:UITableViewStyleGrouped];
;
;
[ addSubview:outTableView];
}
</code></pre>

<p>这里,outTableView 和 outLabel 是输出参数。也就是说,方法完成后,调用者将使用outTableView和outLabel。</p>

<p>我的应用有 3 个 tableview 实例变量——tableView1、tableView2、tableView3。以及三个标签实例变量。查看 Controller (调用者)调用,如:</p>

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

<p>此方法完成后,UILabel* 将呈现在屏幕上,调用者可以使用 UILabel* 对象。奇怪的是,UITableView* 对象并非如此。</p>

<p>任何想法,为什么会有不同的行为? </p>

<p>注意:我的应用程序已启用 ARC。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>错了。参数实际上并不包含已分配/初始化的实例,因为您通过值而不是通过引用传递它们。考虑传递一个指向对象的指针,然后在分配新实例时取消引用它:</p>

<pre><code>- (void)createTableView:(UITableView **)tvPtr
{
    *tvPtr = [ init...];
    // etc.
}
</code></pre>

<p>这样调用:</p>

<pre><code>UITableView *tv;
;
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 通过引用(指针)传递与iOS对象冲突?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/10231286/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/10231286/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 通过引用(指针)传递与iOS对象冲突?