2014-01-05 31 views
0

我想編寫一個交換Objective-C中兩個變量的函數,它應該適用於所有類型(基本類和類對象)。到目前爲止,我發現的是xor swap,但這隻適用於整數,但不適用於浮點數或類對象,我尋找一種通用的方法來編寫這樣的函數,但正如我從幾個響應中理解的那樣Objective-C不支持通用編程,所以我不能像C++中的模板或Java中的泛型類那樣做。有沒有辦法在Objective-C中交換同一類型的任何兩個變量(原始類和類對象)?交換兩個對象Objective-C

+1

雖然技術上不是重複的,因爲ObjC是C的超完美答案(不)是相同的http://stackoverflow.com/questions/2637856/is-there-an-equivalent-of-stdswap-in-c。我特別推薦KennyTM的答案。 –

+0

@RobNapier KennyTM的解決方案奏效。 –

+0

也看看http://stackoverflow.com/questions/3982348/implement-generic-swap-macro-in-c,它提供了一個基於memcpy的解決方案(但它不會安全地使用對象)。 –

回答

2

你不能交換對象,因爲你的代碼沒有「擁有」對象。有沒有變量包含一個對象。它有一個指向對象的指針。

您可以把這個指針作爲你這樣做純粹C.這是因爲指針是純C.