2015-05-10 28 views
0

我很新的Objective-C,我有一個問題。可以重用我們分配的NSString_class嗎?重用已分配的類 - 是否需要釋放它?

NSString_class = [NSString alloc] 

重用這樣的:

str1 = [NSString_class initWithUTF8String: @"blah"] 
str2 = [NSString_class initWithUTF8String: @"blah"] 

,並釋放我沒有釋放NSString_class吧?只是str1和str2?

[str1 release] 
[str2 release] 

回答

2

幾件事情....

這將是非常不尋常的allocinit分成兩個不同的步驟。

您的變量命名也是誤導性的。您從分配實例中獲得的東西是您分配給指針的對象;這不是「......級」。

這就是說,你一次調用alloc,這意味着你只有一個對象。如果您更改其屬性以使str2指向您想要的字符串,那麼您也將其更改爲str1

另外,一個alloc表示保留計數爲+1,這使得兩個release s不正確。

+0

啊謝謝@Phil我把它作爲兩個單獨的原因是因爲我從ctypes這樣做。你和做'釋放'dpesmt返回真或假,所以我不知道我是否在正確的一個做。 – Noitidart

+1

這是關於對象,而不是指向它的變量。如果你分配一個對象,一個'release'匹配那個分配;有多少簡單的變量指向它並不重要。 (如果你有其他變量指向**副本**,那是另外一回事了。) –

+0

噢,我想我現在明白了,非常感謝你! – Noitidart

相關問題