美文网首页iOS阅读笔记
关于Swift的传引用和传值的笔记

关于Swift的传引用和传值的笔记

作者: YBDSup | 来源:发表于2017-05-01 01:27 被阅读0次

做作业的时候遇到一个问题,我将dataSource部分的代码从TableViewController中分离出来。然而,问题在于dataSource内部需要一个数组(称为Array B)进行后续的操作。而我一开始又觉得原来的TableViewController中的另一个数组(称为Array A)也不应该删除。因为那时候我是在TableViewController里面对dataSource进行初始化,并将这个Array A以参数形式传给dataSource的方法来对dataSource进行初始化。所以两个数组都不应该删除。结果导致同样内容的数组重复存储了。

然后我重新看了Swift的传值这里的知识点。作以下笔记:

1.有这样两种传值方式:值传递和引用传递。假如,C值传递D之后,对C作改变不会影响D,因为D是另一个对象,只不过在一开始传了之后D对象的所有属性值和C相等。然后,引用传递的话,改变C会影响D,因为他们指向同一个对象。

2.对于class类型,是引用传递。对于struct是值传递。然后,像是数组,字典,这些他们都是struct,所以都是值传递。(也就是说我作业做的那样是不对的,会产生两份一样的数组)

有2个解决方案:一个是在数组外面再套一个class类型,这样传的时候就是引用传递了,不产生新的数据副本。另一个是在AppDelegate中定义这个数组初始化这个数组。然后,在ViewController或是dataSource内部通过 UIApplication.shared.delegate as AppDelegate来获取AppDelegate的引用之后再取这个数组的各个数据。如果直接拿整个数组出来,又会是struct的传递,又会是值传递,也就是说还是会创造新的数据副本。还有就是这两个方法可以合起来做

相关文章

  • 关于Swift的传引用和传值的笔记

    做作业的时候遇到一个问题,我将dataSource部分的代码从TableViewController中分离出来。然...

  • 视图传值和引用静态文件_Django学习笔记(二)-python

    视图传值和引用静态文件_Django学习笔记(二)-python3 引入js文件 如图: c. 视图传值 -1....

  • JavaScript学习 之 传值or传引用

    目录 引言 传值? 传引用? 基础类型传值-对象类型传引用? 传共享! 小结 引言 JavaScript的函数参数...

  • OC与swift的数据传输

    简介 该项目主要介绍了oc与swift之间、swift内部几种常见的传值方式(属性传值、代码块传值、代理传值、通知...

  • JavaSE基础面试题

    1、Java里的传引用和传值的区别是什么? 答案:传引用是指传递的是地址而不是值本身,传值则是传递值的一份拷贝。 ...

  • Python 函数中,参数是传值,还是传引用?

    Python 函数中,参数是传值,还是传引用? 代码示例 在 C/C++ 中,传值和传引用是函数参数传递的两种方式...

  • iOS之传值

    在iOS中传值的方式有很多种方式,有最普遍的就是属性传值,代理传值,block传值等方式了。写了OC和swift的...

  • java调用方法传递机制

    java是传值,不是传引用,有人说有的人说:基础类型传值,对象类型传引用。其实对象类也是传值,只不过对象的值恰好是...

  • swift传值

    本文将介绍swift中的传值方式:属性传值、代理传值、闭包传值、通知传值本文将在两个VC之间进行传值:HomeVC...

  • go的传值和传引用

    go可以看成增强版的C语言,因此也在一定程度上延续了C的一些特性。和C一样Go语言的函数调用参数全部是传值的,包括...

网友评论

    本文标题:关于Swift的传引用和传值的笔记

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