在Swift數組和NSArrays之間進行投影很容易。我發現,我不認爲應該編譯的情況下:爲什麼`var objCArray = array as NSArray` legal?
let doubleArray = [1.1, 2.22, 3.333, 4.4444, 5.55555,
6.666666, 7.7777777, 8.88888888, 9.999999999]
var objCArray = doubleArray as NSArray
第二行從我雙打的斯威夫特陣列創建一個NSArray,但它存儲在var
。這測試編譯器,它是合法的更改數組的內容。這意味着,如果你試圖再變異的數組,你會得到一個錯誤,即使objCArray聲明爲var
:
objCArray[0] = 123
爲什麼線var objCArray = doubleArray as NSArray
是否合法?
'var objCArray'只是意味着您可以稍後爲其指定其他內容,例如, 'var objCArray = someOtherDoubleArray as NSArray' –
爲什麼它應該是非法的? 'var objCArray'定義了一個可變指針,你可以改變它所持有的地址。它指向的對象是否可變是另一回事 –