iOS開發10種數據傳值方法

轉載自http://blog.csdn.net/kissing_huo/article/details/20366607

1 設置委託(代理模式)
   
   建一個委託testViewDelegate.h
   #import
//b中的參數傳到a
//設置委託方法,例如本文件
//在b中.h描述NSObject * delegate;  .m中調委託方法
//在a中設置b的控制器實現delegate,eg--aViewControll.delegate=self;
//然後在a中賦值


@protocol testViewDelegate
@optional
-(void)outPut:(NSString *)theTitle;


@end


2 extern          
interface之前定義extern NSString *strZhi;
.h
extern NSString *strZhi;
@interface OneViewController : UIViewController {
}
@end


.m
 NSString *strZhi=@"額的神阿,傳值了";
@implementation OneViewController
在SplashViewController.m中定義一個變量是這樣的
#import "SplashViewController.h"
NSString* meString=@"123";
@implementation SplashViewController
// NSString* meString=@"123";
.................
這兩 個地方都行
 
如果在另外的類iTennisViewController.m中要用到這個類中的meString時只需在iTennisViewController.m中寫成這樣
#import "iTennisViewController.h"
extern NSString* meString;
@implementation iTennisViewController
即可
這樣你在iTennisViewController.m中直接打印meString,你會發現 是123,當然你也可以對meString重新斌值 ,就是說meString雖然定義在SplashViewController.m中但好像是公共的,也稱爲全局變量吧


3 NSUserDefaults
.h
#define myAvgcost @"myavgcost"
.m
[[NSUserDefaults standardUserDefaults] setObject:p_Avgcost_arr forKey:myAvgcost];//寫道磁盤
傳到另一個類
NSArry *myAvgcost_arr=[[NSUserDefaults standardUserDefaults] arrayForKey:myAvgcost];
4 單例
主要是全局共享一個類時主要採用的方式。
http://blog.csdn.net/cocoa_geforce/article/details/6747595
5delegate
主要是要把共享的數據設置爲XXDelegate的一個成員變量;
然後在需要的地方通過如下方法獲得一個XXDelegate的對象,如下:
XXDelegate*app = (XXDelegate *) [[UIApplicationsharedApplication] delegate];
每次獲取delegate並不是創建一個新app,每個app只有一個delegate。
6 NSNotification (觀察者模式)




7 對象的property屬性傳值




8 方法的參數傳值




9 靜態方法傳值




10 用給 指向 指針的指針 賦值 的方式傳值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章