objc_setAssociatedObject通过alert传值

转载请标明出处

欢迎交流

zltqzj@163.com

我是一个单线程妞~

 

 

[cpp]  view plain copy
  1. #import "ViewController.h"  
  2. #import <objc/runtime.h>  
  3. static char alertInfoKey;  
  4. @interface ViewController ()  
  5. @end  
  6. @implementation ViewController  
  7. - (void)viewDidLoad  
  8. {  
  9.     [super viewDidLoad];  
  10.     
  11.     NSString* dataYouWantToPass = @"some info";  
  12.     UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"hello" message:@"miss-chalk" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:@"YES", nil];  
  13.     [alert show];  
  14.     objc_setAssociatedObject(alert, &alertInfoKey, dataYouWantToPass, OBJC_ASSOCIATION_RETAIN);  
  15.     // Do any additional setup after loading the view, typically from a nib.  
  16. }  
  17. - (void)didReceiveMemoryWarning  
  18. {  
  19.     [super didReceiveMemoryWarning];  
  20.     // Dispose of any resources that can be recreated.  
  21. }  
  22. -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex  
  23. {  
  24.     NSString* data = objc_getAssociatedObject(alertView, &alertInfoKey);  
  25.     NSLog(@"%@",data);  
  26. }  
  27. @end  

运行结果:

2013-09-17 14:34:05.902 objc_setAssociatedObject--Test[2561:c07] some info


 字符串与数组关联:


[cpp]  view plain copy
  1. <span style="color:#333333">#import <Foundation/Foundation.h>  
  2. #import <objc/runtime.h>  
  3. int main(int argc, const char * argv[])  
  4. {  
  5.     @autoreleasepool {  
  6.           
  7.         // insert code here...  
  8.         NSLog(@"Hello, World!");  
  9.         static char overviewKey;  
  10.         NSArray *array =[[NSArray alloc] initWithObjects:@"One", @"Two", @"Three", nil];  
  11.         //为了演示的目的,这里使用initWithFormat:来确保字符串可以被销毁  
  12.         NSString * overview = [[NSString alloc] initWithFormat:@"%@",@"First three numbers"];  
  13.         objc_setAssociatedObject(array, &overviewKey, overview, OBJC_ASSOCIATION_RETAIN);  
  14.         [overview release];  
  15.           
  16.         NSString *associatedObject = (NSString *)objc_getAssociatedObject(array, &overviewKey);  
  17.         NSLog(@"associatedObject:%@", associatedObject);  
  18.           
  19.         objc_setAssociatedObject(array, &overviewKey, nil, OBJC_ASSOCIATION_ASSIGN);  
  20.         [array release];  
  21.     }  
  22.     return 0;  
  23. }  
  24. </span>  


2013-09-17 15:32:31.773 objc_setAssociatedObject[2830:303] Hello, World!

2013-09-17 15:32:31.776 objc_setAssociatedObject[2830:303] associatedObject:First three numbers


借鉴:http://blog.csdn.net/zhangxingping/article/details/7619444?reload

不过,此博客代码少了个%,导致运行结果不同~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值