2011-01-19 44 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次,但這並不值得優化。