芒果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