在將屬性聲明爲弱類型並將其作爲參數傳遞給removeObject:消息後,不再需要「selectedLine」指針堅持它以前指向的對象。 在此之後LINE-__弱指針類型,即使在強指針釋放同一對象之後仍保留在對象上
[completeLines removeObject:selectedLine]//completeLines is a mutable array here.
不應該selectedLine指針爲零後緊接本使用ARC原則被人指指點點。我早些時候已經把它變成了弱類型。 怎麼把一個的removeObject:實現必須是這個樣子:
-(void)removeObject:(id)obj{//obj pointer now shares an object with (__weak)selectedLine pointer
__weak id ptr;
for (ptr in completeLines)
{
if(ptr==obj)
obj=nil;// releasing a strong reference makes ptr as well as selectedLine automatically release the particular Line object.
}
}
但是當我登錄它的控制檯,弱指針似乎仍然在物體上: -
NSLog(@"%@", selectedLine);
在控制檯我看到對象的細節時,我應該看到(空),而不是登錄到控制檯。 請任何人解釋爲什麼是這種情況..
別的東西保留對象,比數組等。 –
數組正在ARC中保留這個對象。 –
但是強指針(參數變量) - 「obj」被指向removeObject中的零,而selectedLine是一個弱類型指針。所以沒有別的東西可以保留對象,是嗎? – rahulbsb