使用的NSMutableOrderedSet,我得到意外的行爲。意外行爲NSMutableOrderedSet
我設置爲0指數在接下來的通話對象,我讀出索引爲0的對象它是如何指針我回來是不一樣的,因爲我剛插入的一個?在我的日誌記錄的聲明,但都當我評價設置斷點後,指針,對象是SomeObject的不同實例 -
- (void)setRecentObject:(SomeObject *)recentObject
{
// self.activeQueue is a viable instance of NSMutableOrderedSet
[[self activeTileQueue] insertObject:recentObject atIndex:0];
SomeObject *whatIJustInserted = [[self activeTileQueue] objectAtIndex:0];
DebugLog(@"set url at zero: %@, and read back url at zero: %@",[recentObject someDescription], [whatIJustInserted someDescription]);
}
要了我的思維,在這個方法結束,recentObject應該== whatIJustInsereted 。有什麼我不明白NSMutableOrderedSet嗎?
看來, 'insertObject:atIndex'使NSMutableOrderedSet在內部重新排列對象。如果你調用'addObject','objectAtIndex:index'將返回相同的地址。 –
@BorisProhaska它應該重新排列對象並將其他對象索引移位+1 - 但仍然如果我將對象設置爲零,然後在零處讀取對象,它應該是相同的。如果我添加對象,它會將它追加到集合(據我所知),然後檢索索引爲零的對象*將會不同... – isaac
我無法用'[NSMutableArray new]重現'作爲'recentObject'。如果你創建了一個簡單的測試用例,你還會得到錯誤嗎?如果沒有,該錯誤不在此代碼中。 – Chuck