iOS頁面傳值(代理,屬性,單例)-傳值


首先內存管理復習

alloc retain copy new遇到這幾個都要記得release 或者autorelease


定義屬性的時候  

@property(nonatomic,retain)NSArray *arr;

  因為 retain了  所以需要  在.m里面的 dealloc 里面  release 

=======================================================

進入正題

-1

導航欄  控制頁面

首先要在AppDelegate里面創建  初始化一個 UINavigationController  

注意:要alloc一個  直接用屬性的話也要alloc init一個給它!!!

 第一種

UINavigationController *nav= [[UINavigationControlleralloc] initWithRootViewController:self.viewController];

第二種

.h

@property (strong,nonatomic)UINavigationController *navCotrol;

.m

self.navCotrol = [[UINavigationControlleralloc] init];

    [self.navCotrolpushViewController:self.viewControlleranimated:YES];

這樣子就可以切換頁面了  他會控制頁面切換 當我門在下一個頁面的時候 就不能再 重新alloc init一個新的UINavigationController  直接用AppDelegate里面的 這個來控制就ok

在第二個頁面里面直接用

   FirstViewController *vc = [[FirstViewControlleralloc] init];

    //頁面傳值注意傳遞的是地址

    vc.receArray = self.arr;

    [self.navigationControllerpushViewController:vc animated:YES];

這里的navigationController 就是 之前AppDelegate的alloc init的那個


-2

注意:頁面直接的數值傳遞其實是傳遞地址的 (兩個里面定義屬性來傳遞與接受vc.receArray = self.arr;

 //頁面傳值注意傳遞的是地址

   

    FirstViewController *vc = [[FirstViewController allocinit];

    //頁面傳值 注意傳遞的是地址

    vc.receArray = self.arr; = self.arr;

    [self.navigationController pushViewController:vc animated:YES];

所以 值改變的時候會導致在vc中改變了數組receArray的內容 都會改變 arr!

(有時候我門不希望它相互影響 )===》可以在vc頁面里面 新創建一個數組 遍歷得到receArray的數值 然后釋放他 這樣就不會改變 之前了arr了   或者直接用 MutableCopy==>Copy回憶:可變數組的copy(深拷貝) 重新開辟一塊內存空間   不可變的數組等的copy (淺拷貝)改地址 不會重新開辟空間


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com