菜鸟教程小白 发表于 2022-12-13 15:38:02

iOS:设置属性


                                            <p><p>当我使用当前保留的 NSArray 中的对象设置属性时,它会只存储指针(轻量级),还是将内容复制到属性中?</p>

<p>据我所知,它似乎只会分配指针,但我不确定。</p>

<p>另外,在什么情况下使用 *pointer = *otherPointer 或 set 方法(例如 setDelegate)复制值,而不是仅仅传递指针(如果有的话)。
它不应该总是只传递指针地址吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>正如你所说,它总是传递指针。除非您专门添加取消引用符号,否则情况总是如此。</p>

<p>但是,当您将属性添加到类中,并将 setter 设置为 <code>copy</code> 时:</p>

<pre><code>@property (nonatomic, copy) id obj;
</code></pre>

<p>当使用点语法或setter时,这将被翻译成:</p>

<pre><code>_obj = ;
</code></pre>

<p>这里,这将取决于所讨论的对象是否支持复制自身,或者它会退回到它的父类(super class) <code>NSObject</code> 还是另一个中间类的副本。</p>

<p>此外,集合类 <code>NSDictionary</code> 和 <code>NSArray</code> 执行浅拷贝,因为它们仅复制对其对象的引用,因此您有两个指向同一个集合的集合对象。</p></p>
                                   
                                                <p style="font-size: 20px;">关于iOS:设置属性,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/11910892/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/11910892/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iOS:设置属性