1
線程1:在for:in循環中重新分配NSArray指針是否安全?
self.array = [[NSMutableArray alloc] init];
/* load array */
線程2:
for (NSObject* object in self.array) {
/* do stuff */
}
這安全嗎?在for:in循環中何時以及經常訪問self.array?
如果我重新分配self.array,在循環過程中,線程2是否會繼續和平地循環舊的實例,還是會切換到新的實例,可能會導致突變異常?
我剛剛運行了一些測試,證明了這一點。但是,在進一步思考時,我認爲真正的問題是舊的實例現在將被釋放,並且循環將訪問已發佈的對象。 – aepryus
ARC將在循環開始時保留'self.array'返回的對象,並在循環結束時釋放它。 –
哇,很好。所以我不需要將它投射到當地強指針呢? – aepryus