菜鸟教程小白 发表于 2022-12-13 07:57:44

objective-c - iOS:属性——分配和释放对象


                                            <p><p>我在 iOS (4) 中苦苦挣扎,在一个范围内分配对象并在另一个范围内释放它。我使用属性作为指向对象的指针。对象在一个实例类方法中分配和初始化,我在类的 dealloc 方法中释放它。这些属性是用retain声明的。除了在使用此类属性时遇到问题外,我还发现分配和初始化对象以及设置属性很麻烦。 </p>

<pre><code>NSObject *object = [ init];
Self.myProperty = object;
;
</code></pre>

<p>我试过了</p>

<pre><code>self.myObject = [ init];
</code></pre>

<p>但是这给了我一个内存泄漏。</p>

<p>我的问题:<strong>我必须制作这个临时对象还是有更优雅的方法?</strong></p>

<p>一个后续问题:<strong>我是否必须同时将属性设置为 nil 并释放自动生成的 ivar?</strong></p>

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

<p>当 XCode 4 为您生成属性 stub 时,它会将 放入 viewDidUnload 并将 放入 dealloc。 </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>第一个问题:</p>

<p><code>autorelease</code> 是你的 friend :</p>

<pre><code>self.myObject = [[ init] autorelease];
</code></pre>

<p>第二个问题:</p>

<p>不,它是多余的,但无害,因为第二个操作不会执行任何操作(<code></code> 是安全的)。
我建议使用 <code>self.XXX = nil;</code> 构造,因为它更安全且非常清晰/可读。</p></p>
                                   
                                                <p style="font-size: 20px;">关于objective-c - iOS:属性——分配和释放对象,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/6294245/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/6294245/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: objective-c - iOS:属性——分配和释放对象