标签:
ViewController.m
- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor redColor]; } -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { NSString *message = @"这是一条需要传送的消息"; NSLog(@"%p",message); objc_setAssociatedObject(self.navigationController, @"test", message, OBJC_ASSOCIATION_ASSIGN); Test2ViewController *test2 = [[Test2ViewController alloc] init]; [self.navigationController pushViewController:test2 animated:YES]; }
Test2ViewController.m
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. NSString *messageString = objc_getAssociatedObject(self.navigationController, @"test"); self.view.backgroundColor = [UIColor yellowColor]; NSLog(@"%@",messageString); NSLog(@"%@",self.navigationController.viewControllers); NSLog(@"%p",messageString); }
终端打印如下:
看的到vc1中的messge地址和vc2中的地址是一致的,就对了哦
如果是OBJC_ASSOCIATION_COPY,就要考虑是深拷贝还是浅拷贝了,地址的变化也是跟着拷贝走的
类似于把这哥俩绑一块,先存起来,等着要用的时候问其中的大哥,那叫test的小伙呢,
大哥说:啊,在这呢,test出来!呐,人在这呢
我说:人我先用着啊(NSString 引用上),回聊啊。
objc_setAssociatedObject 使用实例间传值
标签:
原文地址:http://my.oschina.net/wupengnash/blog/482953