如果我想要潛在重新分配/初始化並重新使用ARC下的我的類的屬性,如何銷燬先前的實例?ARC和nill屬性
調用self.myProperty = nil;
然後重新分配並初始化相同的屬性是否合法?
感謝, 約翰
如果我想要潛在重新分配/初始化並重新使用ARC下的我的類的屬性,如何銷燬先前的實例?ARC和nill屬性
調用self.myProperty = nil;
然後重新分配並初始化相同的屬性是否合法?
感謝, 約翰
是
self.myProperty = nil;
self.myProperty = [PropertyClass new]; // or [[PropertyClass alloc] init]
會做你想要什麼。如果self
是唯一持有(保留)該實例的事件,則將其還原爲myProperty
類的dealloc
實例方法。
當不再需要引用時,可以使屬性始終爲零。 分配對象時,不需要保持零。
背後的原因:當指針試圖指向不同的位置的,如果沒有其他參考舊的位置是舊的對象將會被釋放。
「Nilling out也會調用dealloc」 - 並非總是如此,這取決於這是否是唯一對對象 –
優秀的「strong」引用,我會盡快標記爲正確。關於「myProperty的類」約翰 – Woodstock
- 不要。 'dealloc'是一個'PropertyClass'實例的方法。 'myProperty'將持有對這個類的一個實例的引用。你不會在類 –