美文网首页面试
Swift和OC数组的区别

Swift和OC数组的区别

作者: PKL | 来源:发表于2016-12-14 16:03 被阅读0次

场景:一个数组(bigArray)里包含几个小数组(smallArray),小数组里的数据分别是tableView要展示的不同数据。

那么问题来了,在OC里,用过NSMutableArray *smalllArray = bigArray[0],取出的smallArray,此时对smallArray进行元素处理(删除,添加),bigArray[0]一样改变。

在Swift则不然,smallArray进行操作,bigArray[0]不会改变。

遇到类似的问题,最好的方法就是把数组的内存地址:打印之。

OC很简单,打印的结果也如我所料,smallArray跟bigArray[0]是一样的内存地址

Swift怎么打印数组的内存地址还没找到 =。= ,打印数组元素的内存方法是

func printAddress(o:T)  {

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

}

但是这并没有什么卵用 =。=,写在这里只是提醒自己别忘了这个方法,Swift这些API太蛋疼。

最后想到的可能性只有OC和Swift数组的区别了。

果不其然,OC的NSMutableArray 

@interface NSObject{

Class isa  OBJC_ISA_AVAILABILITY;

最根本是Class

Swift的Array 

public struct Array: RandomAccessCollection, MutableCollection

起本质是一个结构体。

其实不仅仅是数组,Swift里很多常用的API都是Struct类型,这就导致了上述场景我在OC里运用的很溜的一个方法,到Swift里各种碰壁。

因为本身也是小菜鸟一枚,所以对于结构体和类的内存地址问题不做深讨,有错误和不足之处忘大神们指教!😆

相关文章

  • Swift基础语法05-- 数组

    前言 swift中的数组和OC中的数组大体上是一样的,下面我们一一了解一下OC与swift中数组的区别. swif...

  • Swift和OC数组的区别

    场景:一个数组(bigArray)里包含几个小数组(smallArray),小数组里的数据分别是tableView...

  • OC与swift的区别

    OC与Swift的区别一(文件结构) OC与Swift的区别一(常量、变量、运算符) OC与Swift的区别三(条...

  • 面试题

    Swift和OC的区别? 1.swift是静态语言,有类型推断,OC是动态语言。2.swift面向协议编程,OC面...

  • 按位或操作

    1. OC 和 Swift 中的区别 OC中定义Options Swift 中定义Options ** 在Swif...

  • Swift和OC中数组的区别

    swift:Array 在Swift 中是一个结构体,在Swift中结构体是值类型,他们的值是复制的而不是引用的。...

  • Swift 3.x(字符串,数组,字典,元组,可选类型)

    Swift 字符串介绍 OC和Swift中字符串的区别 OC中字符串类型是NSString ,在Swift...

  • swift面试题

    一.Swift和OC的区别? 1.swift是静态语言,有类型推断,OC是动态语言。 2.swift面向协议编程,...

  • 浅谈Swift和OC的区别

    浅谈Swift和OC的区别 一、Swift和Objective-C的联系 Swift和Objective-C共用一...

  • Swift语言基础

    //Swift 与 OC 的区别

网友评论

    本文标题:Swift和OC数组的区别

    本文链接:https://www.haomeiwen.com/subject/ydyxuttx.html