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

ios - 自动释放的 NSDictionary 的内存泄漏


                                            <p><p>我已经分析了我的代码,分析器显示我的方法之一是在自动释放的对象上泄漏内存。以下是相关代码的片段:</p>

<pre><code>-(void) fillRSSEntriesDictionaryObject: (NSMutableDictionary *) dictionaryObjectwithAllRSSEntries: (NSArray *) allRSSEntries forKey: (NSString *) keyForRSSEntriesArchive {
    RSSEntry *anRSSEntry;
    NSArray *source;
    NSMutableArray *episodes;   
    NSMutableArray *sourceArray = [[ initWithObjects:nil] autorelease];
    for (int i=0; i&lt;; i++) {
      source = ;   // grab the next source array.
      episodes = [[ initWithObjects:nil] autorelease];// initialize the episodes array
      for (int j=0; j&lt;; j++) {
            anRSSEntry = ;
            NSDictionary *episodeDictionary = [NSDictionary dictionaryWithObjectsAndKeys:anRSSEntry.blogTitle, @&#34;Blog Title&#34;,
                                             anRSSEntry.articleTitle, @&#34;Article Title&#34;, nil];
            ; // save the info for this episode
      }

      ;
    }

    // Finally, we need to create the key-value pair for the source array
    ;
}
</code></pre>

<p>如您所见,sourceArray 和 Episodes 是唯一分配的内存,并且两者都是自动释放的。 episodes 数组被添加到 sourceArray 数组中。 sourceArray 成为传递给调用者的对象。</p>

<p>profiler提供的具体信息是,责任库是“基础”,责任调用者是+。当我展开它时,它最终将我的应用程序作为负责的库,并将此方法作为负责的调用者。</p>

<p>既然这些是自动释放的数组,为什么分析器会提示内存泄漏?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这里没有泄漏。很可能其他一些代码稍后会使用这些对象并泄漏它们。 </p>

<p>您可以使用 Instruments 查看泄漏对象的保留/释放历史记录,这应该可以帮助您找到额外的保留或丢失的释放。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 自动释放的 NSDictionary 的内存泄漏,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/18665610/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/18665610/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 自动释放的 NSDictionary 的内存泄漏