2012-05-03 58 views
-3
// Directly assigning the value. 
NSString *str = [objDictionary objectForKey:@"attributeName"]; 

// Assigning with convenience method 
NSString *str = [NSString stringWithFormat:@"%@", [objDictionary objectForKey:@"attributeName"]]; 

// Assigning after being owner to that object. 
NSString *str = [[NSString alloc] initWithString:@"%@", [objDictionary objectForKey:@"attributeName"]]; 

在哪些情況下,我們需要確定哪些需要在代碼中使用。 ??? 任何參考鏈接之間的差異相同?以下NSString分配調用之間的基本區別

或者可以有人回答這個問題的深度?

感謝您的幫助。

回答

3
NSString *str = [objDictionary objectForKey:@"attributeName"]; 

這是你想要的用戶局部變量的聲明與分配 自動釋放內存,即你不需要擔心內存分配/釋放。當需要不同類型的單個串 即整數/浮子隨着串 爲例如結合

NSString *str = [NSString stringWithFormat:@"%@", [objDictionary objectForKey:@"attributeName"]]; 

此方法非常有用

NSString *str = [NSString stringWithFormat:@"%@ and %d", [objDictionary objectForKey:@"attributeName"], 5]; 

這將導致「你的價值和5」

NSString *str = [[NSString alloc] initWithString:@"%@", [objDictionary objectForKey:@"attributeName"]]; 

這是你在哪裏分配內存分配,你需要有一個變量來使用一些其他的地方,以便它會在那裏直到並且除非你釋放該變量的內存。 確保當你分配內存時,你自己釋放內存,因爲你是負責任的內存。

有關進一步的詳細研究,我建議您訪問documentation爲NSString,它會給你關於可用的類/實例方法和如何使用的想法。

+0

這應該是公認的答案,不是我的。改爲upvote。 – jrturton

+0

Thax jrturton。 Thax再次很多:D –

2

假設你的字典包含一個字符串,在ARC下,這些都是完全相同的。通過手動引用計數,前兩個是自動釋放,最後一個保留。

有關參考指南,不能比NSString class reference做得更好。

+0

我接受了你的答案,僅僅是因爲「在ARC之下,所有這些都是完全相同的」。我正在使用ARC。乾杯... – viral

+0

你問的深度,以及其他答案提供的! – jrturton