Swift和OC數(shù)組的區(qū)別

場景:一個數(shù)組(bigArray)里包含幾個小數(shù)組(smallArray),小數(shù)組里的數(shù)據(jù)分別是tableView要展示的不同數(shù)據(jù)。

那么問題來了,在OC里,用過NSMutableArray *smalllArray = bigArray[0],取出的smallArray,此時對smallArray進行元素處理(刪除,添加),bigArray[0]一樣改變。

在Swift則不然,smallArray進行操作,bigArray[0]不會改變。

遇到類似的問題,最好的方法就是把數(shù)組的內存地址:打印之。

OC很簡單,打印的結果也如我所料,smallArray跟bigArray[0]是一樣的內存地址

Swift怎么打印數(shù)組的內存地址還沒找到 =。= ,打印數(shù)組元素的內存方法是

func printAddress(o:T) ?{

debugLog(String.init(format: "%018p", unsafeBitCast(o, to: Int.self)))

}

但是這并沒有什么卵用 =。=,寫在這里只是提醒自己別忘了這個方法,Swift這些API太蛋疼。

最后想到的可能性只有OC和Swift數(shù)組的區(qū)別了。

果不其然,OC的NSMutableArray?

@interface NSObject{

Class isa? OBJC_ISA_AVAILABILITY;

}?

最根本是Class

Swift的Array?

public struct Array: RandomAccessCollection, MutableCollection

起本質是一個結構體。

其實不僅僅是數(shù)組,Swift里很多常用的API都是Struct類型,這就導致了上述場景我在OC里運用的很溜的一個方法,到Swift里各種碰壁。

因為本身也是小菜鳥一枚,所以對于結構體和類的內存地址問題不做深討,有錯誤和不足之處忘大神們指教!??

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容