1. 程式人生 > >芒果iOS開發之介面傳值方式-陣列回傳值

芒果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的值和記憶體地址方便後邊進行比較,如圖:


三、在SecondViewController的標頭檔案中建立一個可變陣列的屬性receiveArr,如圖:


四、在ViewController進行頁面切換的時候把valueArray的值傳遞給receiveArr,如圖:



五、在SecondViewController的viewDidLoad方法中先列印看一下receiveArr的值和記憶體地址,然後我在receiveArr中用addObject方法新增兩個元素,之後再列印一次receiveArr的值和記憶體地址,如圖:


六、在SecondViewController頁面返回ViewController的時候,在viewWillAppear中列印valueArray的值,看看是否增加,如圖:


七、執行之後控制檯輸出如下:


可以看出來第一次初始化之後valueArray的值是空的,因為沒有進行賦值。第二次viewWillAppear方法裡也沒有賦值所以也是空的。

八、當點選進入SecondViewController之後,控制檯輸出資訊:


可以看出因為valueArray之前是空陣列,所以一開始receiveArr的值也是空。但是receiveArr和valueArray的指標都是同一個記憶體地址,這也就印證了指標的原理,賦值操作其實是將receiveArr指標地址指向了valueArray的記憶體地址。

通過addObject方法新增元素之後,現在receiveArr中就有了兩個值。


九、在SecondViewController點選返回後控制檯輸出資訊:


現在就把值從SecondViewController傳到了ViewController裡邊。

十、最後需要注意的是在SecondViewController中我寫了一個Warning警告,陣列傳值需要注意的是不能使用arrayWithObjects方法或者alloc、init等初始化方法新增元素。這樣系統會為陣列重新分配記憶體地址,就達不到傳值的目的了。

專案原始碼連結: https://pan.baidu.com/s/1geU0A3L 密碼: 8pqv



歡迎大家關注“”芒果iOS微信公眾賬號,芒果會經常為大家分享好的技術文章:

還可以關注芒果iOS 簡書技術部落格:

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