iOS 开发 : How am I mismanaging memory in this code?
<p><p>我刚刚添加了一些取自 <a href="http://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html#//apple_ref/doc/uid/TP40007451-CH7-SW20" rel="noreferrer noopener nofollow">Apple docs</a> 的代码它显示了如何使用从 nib 创建的自定义 UITableViewCells。我是 iOS 开发的新手,所以我仍在学习正确的内存管理,而且代码对我来说并不完全清楚它是如何工作的。当我运行 Allocations 工具时,它会在下面的代码中显示未分配的内存。具体来说,它显示在 ViewController 从导航堆栈中弹出后 UITableViewCells 仍然存在...</p>
<pre><code>- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"MyCustomCellIdentifier";
UITableViewCell *cell = ;
if (cell == nil) {
[ loadNibNamed:@"MyCustomCell_iPhone" owner:self options:nil];//<--Allocations instrument complaining about this line
cell = customCell;
;
}
return cell;
}
</code></pre>
<p><code>customCell</code> 是在这个 ViewController 中定义的一个实例变量,像这样...</p>
<pre><code>IBOutlet UITableViewCell *customCell;
@property (nonatomic, retain) IBOutlet UITableViewCell *customCell;
</code></pre>
<p>这段代码有问题吗?</p>
<p>非常感谢您的智慧!</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>我比较了文档中的代码:</p>
<pre><code>if (cell == nil) {
[ loadNibNamed:@"TVCell" owner:self options:nil];
cell = tvCell;
self.tvCell = nil;
}
</code></pre>
<p>使用您的代码:</p>
<pre><code>if (cell == nil) {
[ loadNibNamed:@"MyCustomCell_iPhone" owner:self options:nil];
cell = ;
;
}
</code></pre>
<p>您分配 <code>cell</code> 的行似乎存在差异。 Apple 的示例代码使用 <code>tvCell</code>,<strong>实例变量</strong>,而您使用 <code></code>,<strong>实例变量的属性 getter </强>。这可能是原因吗?尝试改变</p>
<pre><code> cell = ;
</code></pre>
<p>到</p>
<pre><code> cell = customCell;
</code></pre></p>
<p style="font-size: 20px;">关于iOS 开发 : How am I mismanaging memory in this code?,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/4347600/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/4347600/
</a>
</p>
页:
[1]