芒果iOS开发之界面传值方式-数组回传值

【主要内容:】


1. iOS开发界面间传值介绍

2. 数组回传值实现步骤


一、 iOS开发界面间传值介绍


在iOS开发过程中经常会用到界面之间的传值,提到传值大家立马就能说出来很多种方式:比如,最简单的属性传值;还有代理传值、block传值、通知传值、KVO传值、单例传值、NSUserDefaults传值、文件(Json、XML、plist)传值、数据库传值等等。今天给大家介绍另外一种传值方式 - 数组传值,很巧妙的利用了指针的原理把值在页面之间传递。


二、. 数组回传值实现步骤

下边分步骤来说一下数组+指针的传值方式:


一、打开Xcode新建Single View Application,然后在创建一个SecondViewController。在Storyboard里边进行关联,并且在ViewController中创建一个按钮,点击之后进入SecondViewController里边,如图:


二、在ViewController中声明一个可变数组的属性valueArray,并在viewDidLoad中初始化。在初始化后紧接着log输出valueArray的值和内存地址方便后边进行比较,如图:

芒果iOS开发之界面传值方式-数组回传值_第1张图片


三、在SecondViewController的头文件中创建一个可变数组的属性receiveArr,如图:



四、在ViewController进行页面切换的时候把valueArray的值传递给receiveArr,如图:


芒果iOS开发之界面传值方式-数组回传值_第2张图片

五、在SecondViewController的viewDidLoad方法中先打印看一下receiveArr的值和内存地址,然后我在receiveArr中用addObject方法添加两个元素,之后再打印一次receiveArr的值和内存地址,如图:

芒果iOS开发之界面传值方式-数组回传值_第3张图片

六、在SecondViewController页面返回ViewController的时候,在viewWillAppear中打印valueArray的值,看看是否增加,如图:


芒果iOS开发之界面传值方式-数组回传值_第4张图片

七、运行之后控制台输出如下:


可以看出来第一次初始化之后valueArray的值是空的,因为没有进行赋值。第二次viewWillAppear方法里也没有赋值所以也是空的。


八、当点击进入SecondViewController之后,控制台输出信息:



可以看出因为valueArray之前是空数组,所以一开始receiveArr的值也是空。但是receiveArr和valueArray的指针都是同一个内存地址,这也就印证了指针的原理,赋值操作其实是将receiveArr指针地址指向了valueArray的内存地址。

通过addObject方法添加元素之后,现在receiveArr中就有了两个值。


九、在SecondViewController点击返回后控制台输出信息:

芒果iOS开发之界面传值方式-数组回传值_第5张图片

现在就把值从SecondViewController传到了ViewController里边。


十、最后需要注意的是在SecondViewController中我写了一个Warning警告,数组传值需要注意的是不能使用arrayWithObjects方法或者alloc、init等初始化方法添加元素。这样系统会为数组重新分配内存地址,就达不到传值的目的了。

项目源码链接: https://pan.baidu.com/s/1geU0A3L 密码: 8pqv



欢迎大家关注“”芒果iOS微信公众账号,芒果会经常为大家分享好的技术文章:

还可以关注芒果iOS 简书技术博客:

http://www.jianshu.com/users/2aa806789140/latest_articles


芒果iOS开发之界面传值方式-数组回传值_第6张图片


你可能感兴趣的:(界面传值,Block传值,代理传值,芒果iOS开发,iOS传值方式)