码迷,mamicode.com
首页 > 其他好文 > 详细

objc_setAssociatedObject 使用实例间传值

时间:2015-07-23 18:00:21      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!