2014-04-12 44 views
1

如果我想要潛在重新分配/初始化並重新使用ARC下的我的類的屬性,如何銷燬先前的實例?ARC和nill屬性

調用self.myProperty = nil;然後重新分配並初始化相同的屬性是否合法?

感謝, 約翰

回答

2

self.myProperty = nil; 
self.myProperty = [PropertyClass new]; // or [[PropertyClass alloc] init] 

會做你想要什麼。如果self是唯一持有(保留)該實例的事件,則將其還原爲myProperty類的dealloc實例方法。

+3

「Nilling out也會調用dealloc」 - 並非總是如此,這取決於這是否是唯一對對象 –

+0

優秀的「strong」引用,我會盡快標記爲正確。關於「myProperty的類」約翰 – Woodstock

+0

- 不要。 'dealloc'是一個'PropertyClass'實例的方法。 'myProperty'將持有對這個類的一個實例的引用。你不會在類 –

1

當不再需要引用時,可以使屬性始終爲零。 分配對象時,不需要保持零。

背後的原因:當指針試圖指向不同的位置的,如果沒有其他參考舊的位置是舊的對象將會被釋放