2011-01-19 43 views
0

这是我写新手问题的内存和代码优化

domaine *detailsDomaine = [search_result objectAtIndex:indexPath.row]; 
cell.textLabel.text = [NSString stringWithFormat:@"%@",[detailsDomaine valueForKey:@"nom"]]; 

是否有可能不分配一个变量(detailsDomaine),以达到同样的效果? 之后我是否必须发布详细信息Domaine变量?我没有使用任何其他地方的代码的其余部分

...

+0

我会说这实际上比填充标签分配行中的“[search_result objectAtIndex:indexPath.row]”要好。它更易读易维护。 – Gianz 2011-01-19 08:47:10

回答

0

有可能不是创建这个独立的变量。在第一排与分配的右侧第二排替换detailsDomaine

cell.textLabel.text = [NSString stringWithFormat:@"%@",[[search_result objectAtIndex:indexPath.row] valueForKey:@"nom"]]; 

不,你不必事后释放detailsDomaine对象,因为你没有retain它。

+0

@krifur如果它将被重新绑定属性,那么它需要为零,而不是释放,如果你已经分配了它,那么你可以释放它,并在此之后使它成为零。 – Sabby 2011-01-19 10:22:21

2

不,您不需要发布详细信息Domaine因为您没有为其分配任何内存或保留它。你可以这样做:

cell.textLabel.text = [NSString stringWithFormat:@"%@", [[search_result objectAtIndex:indexPath.row] valueForKey:@"nom"]]; 

但它是相当丑陋。

+0

thx再次! – krifur 2011-01-19 08:48:33

+0

right bro ...... – Sabby 2011-01-19 10:32:28

0

首先你并不需要释放它的...

你也可以把它写在一个语句像

cell.textLabel.text = [NSString stringWithFormat:@"%@",[[search_result objectAtIndex:indexPath.row] valueForKey:@"nom"]]; 
0

其他的答案是正确的,我只想补充一点:约翰尼格拉斯所说的是真的。这是丑陋的,即更难以阅读。它也不会为你带来任何收益。编译器可能会记录多余的分配,并优化它。即使它确实如此,除非这一秒被称为10,000次,但这并不值得优化。