2014-12-30 37 views
0

在這種UITable梅索德我得到我的桌子部分的數量:iOS的64位計數

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return [[self.myMutableDictonary allKeys] count]; 
} 

一切正常,在64個器件和模擬器。但在較舊的設備/模擬器上,我的表格顯示0個部分或1個部分(隨機)。但是應該有15個部分,比如64位版本。

我知道它必須是64/32位的東西,但我不知道是什麼原因。

+0

最有可能的只是巧合。我不明白這是由32/64位體系結構的差異造成的。你如何創建myMutableDictionary?順便說一句。 'allKeys'是無序的。使用它作爲dataSource不是一個好主意。 –

+0

是的,上面的代碼中沒有任何內容會對整數大小敏感。 –

回答

0

謝謝你的幫助。你說得對,跟伯爵無關。

我比較了我的應用中的NSDates和'<'符號。很明顯,這對於64位設備是可能的,並且提供了很好的結果。但是,對於32位設備,它提供了隨機結果。

現在我用 - (NSComparisonResult)比較:(NSDate *)anotherDate 方法。一切工作正常

+0

我將重溫在64位體系結構中比較'NSDate'對象與'<'的邏輯。我會開始[這裏](http://stackoverflow.com/a/2293878/620197) –

+0

你不能(有效地)比較NSDate對象與'<或'=='等。當你這樣做時,你是在比較對象地址,即使兩個NSDate對象是相同的,它們可能有不同的地址。 (它*可能*在64位系統上工作*有時會*因爲NSDate和NSNumber對象有時*被優化爲單個64位數量,但即使從代碼的一次執行到下一步)。 –

+0

(你永遠不要使用這些運算符來比較對象。) –