本来这次的代码写的比较简单,除了传值方式的选项外,没添加别的控件,只是把传过去的值在控制台打印了一下,但由于把多种传值方式放在了同一篇里面,所以文章会显得过长,文章内容都是直接粘的代码,主要是为了方便查看逻辑,有不清楚的地方,朋友们可以直接下载Demo看具体的结构和代码。
事例Demo:链接: http://pan.baidu.com/s/1pJmlr9D 密码: 7faq
属性传值
SetProrerty.h
#import <Foundation/Foundation.h>
@interface SetProrerty : NSObject
@property (nonatomic,copy) NSString *string;
@property (nonatomic,strong) NSArray *array;
@property (nonatomic,strong) NSDictionary *dictionary;
- (void)setProrerty;
@end
SetProrerty.m
#import "SetProrerty.h"
@implementation SetProrerty
@synthesize string = _string;
@synthesize array = _array;
@synthesize dictionary = _dictionary;
- (void)setProrerty
{
self.string = @"string";
self.array = @[@"object_0",@"object_1"];
self.dictionary = @{@"key_0":@"value_0",@"key_1":@"value_1"};
}
@end
GetProrerty.h
#import <Foundation/Foundation.h>
@interface GetProrerty : NSObject
- (void)getProperty;
@end
GetProrerty.m
#import "GetProrerty.h"
#import "SetProrerty.h"
@implementation GetProrerty
- (void)getProperty
{
SetProrerty *setPro = [[SetProrerty alloc]init];
[setPro setProrerty];
NSLog(@"\n========>prorerty:\n%@;\n%@;\n%@;",setPro.string,setPro.array,setPro.dictionary);
}
@end
代理传值
SetDelegate.h
#import <Foundation/Foundation.h>
@protocol TheDelegate;
@interface SetDelegate : NSObject
@property (nonatomic,weak)id <TheDelegate>delegate;
- (void)callBackDelegate;
@end
//创建协议
@protocol TheDelegate <NSObject>
@required
@optional
- (void)setDelegateWithString:(NSString *)string;
- (void)setDelegateWithArray:(NSArray *)array;
- (void)setDelegateWithDictionary:(NSDictionary *)dictionary;
- (void)setDelegateWithString:(NSString *)string andArray:(NSArray *)array andDictionary:(NSDictionary *)dictionary;
@end
SetDelegate.m
#import "SetDelegate.h"
@implementation SetDelegate
@synthesize delegate = _delegate;
- (void)callBackDelegate
{
//监听代理方法是否被实现,若实现则执行该代理方法
if ([self.delegate respondsToSelector:@selector(setDelegateWithString:)]) {
[self.delegate setDelegateWithString:@"string"];
}
if ([self.delegate respondsToSelector:@selector(setDelegateWithArray:)]) {
[self.delegate setDelegateWithArray:@[@"object_0",@"object_1"] ];
}
if ([self.delegate respondsToSelector:@selector(setDelegateWithDictionary:)]) {
[self.delegate setDelegateWithDictionary:@{@"key_0":@"value_0",@"key_1":@"value_1"}];
}
if ([self.delegate respondsToSelector:@selector(setDelegateWithString:andArray:andDictionary:)]) {
[self.delegate setDelegateWithString:@"string" andArray:@[@"object_0",@"object_1"] andDictionary:@{@"key_0":@"value_0",@"key_1":@"value_1"}];
}
}
@end
GetDelegate.h
#import <Foundation/Foundation.h>
#import "SetDelegate.h"
@interface GetDelegate : NSObject<TheDelegate>
- (void)getDelegate;
@end
GetDelegate.m
#import "GetDelegate.h"
@implementation GetDelegate
- (void)getDelegate
{
SetDelegate *setDelegate = [[SetDelegate alloc]init];
setDelegate.delegate = self;
[setDelegate callBackDelegate];
}
//代理方法(string)
- (void)setDelegateWithString:(NSString *)string
{
NSLog(@"\n========>delegate:\n%@", string);
}
//代理方法(array)
- (void)setDelegateWithArray:(NSArray *)array
{
NSLog(@"\n========>delegate:\n%@", array);}
//代理方法(dictionary)
- (void)setDelegateWithDictionary:(NSDictionary *)dictionary
{
NSLog(@"\n========>delegate:\n%@", dictionary);
}
//代理方法(string, array, dictionary)
- (void)setDelegateWithString:(NSString *)string andArray:(NSArray *)array andDictionary:(NSDictionary *)dictionary
{
NSLog(@"\n========>delegate:\n%@\n%@\n%@", string, array, dictionary);
}
@end
Block传值
SetBlock.h
#import <Foundation/Foundation.h>
@interface SetBlock : NSObject
- (void)setBlockWithString:(void(^)(NSString *string))string;
- (void)setBlockWithArray:(void(^)(NSArray *array))array;
- (void)setBlockWithDictionary:(void(^)(NSDictionary *dictionary))dictionary;
- (void)setBlockWithAll:(void(^)(NSString *string,NSArray *array,NSDictionary *dictionary))all;
@end
SetBlock.m
#import "SetBlock.h"
@implementation SetBlock
- (void)setBlockWithString:(void(^)(NSString *string))string
{
NSString *str = @"string";
if (string)
{
string(str);
}
}
- (void)setBlockWithArray:(void(^)(NSArray *array))array
{
NSArray *arr = @[@"object_0",@"object_1"];
if (array)
{
array(arr);
}
}
- (void)setBlockWithDictionary:(void(^)(NSDictionary *dictionary))dictionary
{
NSDictionary *dic = @{@"key_0":@"value_0",@"key_1":@"value_1"};
if (dictionary)
{
dictionary(dic);
}
}
- (void)setBlockWithAll:(void(^)(NSString *string,NSArray *array,NSDictionary *dictionary))all
{
NSString *str = @"string";
NSArray *arr = @[@"object_0",@"object_1"];
NSDictionary *dic = @{@"key_0":@"value_0",@"key_1":@"value_1"};
if (all)
{
all(str,arr,dic);
}
}
@end
GetBlock.h
#import <Foundation/Foundation.h>
typedef void (^BlockWithString)(NSString *string);
typedef void (^BlockWithArray)(NSArray *array);
typedef void (^BlockWithDictionary)(NSDictionary *dictionary);
typedef void (^BlockWithAll)(NSString *string,NSArray *array,NSDictionary *dictionary);
@interface GetBlock : NSObject
@property (nonatomic,strong) BlockWithString stringBlock;
@property (nonatomic,strong) BlockWithArray arrayBlock;
@property (nonatomic,strong) BlockWithDictionary dictionaryBlock;
@property (nonatomic,strong) BlockWithAll allBlock;
- (void)getBlock;
@end
GetBlock.m
#import "GetBlock.h"
#import "SetBlock.h"
@implementation GetBlock
@synthesize stringBlock = _stringBlock;
@synthesize arrayBlock = _arrayBlock;
@synthesize dictionaryBlock = _dictionaryBlock;
@synthesize allBlock = _allBlock;
- (void)getBlock
{
SetBlock *block = [[SetBlock alloc]init];
[block setBlockWithString:^(NSString *string)
{
NSLog(@"============>block\n:%@",string);
}];
[block setBlockWithArray:^(NSArray *array) {
NSLog(@"============>block\n:%@", array);
}];
[block setBlockWithDictionary:^(NSDictionary *dictionary) {
NSLog(@"============>block\n:%@", dictionary);
}];
[block setBlockWithAll:^(NSString *string, NSArray *array, NSDictionary *dictionary) {
NSLog(@"============>block\n:%@\n%@\n%@", string, array, dictionary);
}];
}
@end
通知传值
SetNotification.h
#import <Foundation/Foundation.h>
@interface SetNotification : NSObject
- (void)setNotification;
@end
SetNotification.m
#import "SetNotification.h"
@implementation SetNotification
- (void)setNotification
{
//创建通知中心
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
//发送通知 以下是三种发送方式 //name:通知的名称 object:发通知的内容(只读) userInfo:补充信息(字典)
// [center postNotification:<#(NSNotification *)#>]
// [center postNotificationName:<#(NSString *)#> object:<#(id)#>]
// [center postNotificationName:<#(NSString *)#> object:<#(id)#> userInfo:<#(NSDictionary *)#>]
NSString *string = @"string";
[center postNotificationName:@"string" object:string];
NSArray *array = @[@"object_1",@"object_1"];
[center postNotificationName:@"array" object:array];
NSDictionary *dictionary = @{@"kye_0":@"value_0",@"key_1":@"value_1"};
[center postNotificationName:@"dictionary" object:dictionary userInfo:nil];
//创建一个通知
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:string,@"string",array,@"array",dictionary,@"dictionary", nil];
NSNotification *notification = [[NSNotification alloc]initWithName:@"all" object:string userInfo:dic];
[center postNotification:notification];
}
@end
GetNotification.h
#import <Foundation/Foundation.h>
@interface GetNotification : NSObject
- (void)getNotification;
@end
GetNotification.m
#import "GetNotification.h"
#import "SetNotification.h"
@implementation GetNotification
- (void)dealloc
{
//注销通知 注册与注销要成对出现
[[NSNotificationCenter defaultCenter]removeObserver:self];
}
- (void)getNotification
{
//接收方创建通知中心
NSNotificationCenter * center = [NSNotificationCenter defaultCenter];
//注册 Observer:注册者 name:要接收的通知的名称 ;
//selector:接收到通知之后对应的操作方法;方法中传递的参数是接收到的通知
//object:对发送者的要求;一般填nil,不关心是谁发的通知; 如果写 腾讯 ,意思是只能接收到腾讯发的通知;
[center addObserver:self selector:@selector(receiveString:) name:@"string" object:nil];
[center addObserver:self selector:@selector(receiveArray:) name:@"array" object:nil];
[center addObserver:self selector:@selector(receiveDictionary:) name:@"dictionary" object:nil];
[center addObserver:self selector:@selector(receiveAll:) name:@"all" object:nil];
}
- (void)receiveString:(NSNotification*)notify
{
id object = [notify object];
NSLog(@"============>getNotification:\n%@ ",object);
}
- (void)receiveArray:(NSNotification*)notify
{
id object = [notify object];
NSLog(@"============>getNotification:\n%@ ",object);
}
- (void)receiveDictionary:(NSNotification*)notify
{
id object = [notify object];
NSLog(@"============>getNotification:\n%@ ",object);
}
- (void)receiveAll:(NSNotification*)notify
{
//接收通知里传过来的信息
NSDictionary *dic = [notify userInfo];
NSLog(@"============>getNotification:\n%@",dic);
}
@end
本地存储传值
SetUserDefaults.h
#import <Foundation/Foundation.h>
@interface SetUserDefaults : NSObject
- (void)setUserDefaults;
@end
SetUserDefaults.m
#import "SetUserDefaults.h"
@implementation SetUserDefaults
- (void)setUserDefaults
{
[[NSUserDefaults standardUserDefaults] setObject:@"string" forKey:@"string"];
[[NSUserDefaults standardUserDefaults] setObject:@[@"object_0",@"object_1"] forKey:@"array"];
[[NSUserDefaults standardUserDefaults] setObject:@{@"key_0":@"value_0",@"key_1":@"value_1"} forKey:@"dictionary"];
//同步数据
[[NSUserDefaults standardUserDefaults] synchronize];
}
@end
GetUserDefaults.h
#import <Foundation/Foundation.h>
@interface GetUserDefaults : NSObject
- (void)getUserDefaults;
@end
GetUserDefaults.m
#import "GetUserDefaults.h"
@implementation GetUserDefaults
- (void)getUserDefaults
{
NSLog(@"=============>NSUserDefaults:%@\n", [[NSUserDefaults standardUserDefaults] objectForKey:@"string"]);
NSLog(@"=============>NSUserDefaults:%@\n", [[NSUserDefaults standardUserDefaults] objectForKey:@"array"]);
NSLog(@"=============>NSUserDefaults:%@\n", [[NSUserDefaults standardUserDefaults] objectForKey:@"dictionary"]);
// //移除用户数据
// [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"string"];
// [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"array"];
// [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"dictionary"];
}
单例传值
SetSingleton.h
#import <Foundation/Foundation.h>
@interface SetSingleton : NSObject
- (void)setSingleton;
@end
SetSingleton.m
#import "SetSingleton.h"
#import "Singleton.h"
@implementation SetSingleton
- (void)setSingleton
{
// [[Singleton shareData]setString:@"string"];
// 跟上面的写法是等价的
Singleton *single = [Singleton shareData];
single.string = @"string";
single.array = @[@"object_0",@"object_1"];
single.dictionary = @{@"key_0":@"value_0",@"key_1":@"value_1"};
}
@end
GetSingleton.h
#import <Foundation/Foundation.h>
@interface GetSingleton : NSObject
- (void)getSingleton;
@end
GetSingleton.m
#import "GetSingleton.h"
#import "Singleton.h"
@implementation GetSingleton
- (void)getSingleton
{
Singleton *single = [Singleton shareData];
NSLog(@"\n========>singleton:\n%@;\n%@;\n%@;",single.string,single.array,single.dictionary);
}
@end
Singleton.h
#import <Foundation/Foundation.h>
@interface Singleton : NSObject
@property (nonatomic,copy) NSString *string;
@property (nonatomic,strong) NSArray *array;
@property (nonatomic,strong) NSDictionary *dictionary;
+ (Singleton *)shareData;
@end
Singleton.m#import "Singleton.h"
@implementation Singleton
@synthesize string = _string;
@synthesize array = _array;
@synthesize dictionary = _dictionary;
static Singleton *singletonData = nil;
+ (Singleton *)shareData
{
if (!singletonData)
{
singletonData = [[Singleton alloc]init];
}
return singletonData;
}
@end