转载请标明出处
欢迎交流
zltqzj@163.com
我是一个单线程妞~
- #import "ViewController.h"
- #import <objc/runtime.h>
- static char alertInfoKey;
- @interface ViewController ()
- @end
- @implementation ViewController
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- NSString* dataYouWantToPass = @"some info";
- UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"hello" message:@"miss-chalk" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:@"YES", nil];
- [alert show];
- objc_setAssociatedObject(alert, &alertInfoKey, dataYouWantToPass, OBJC_ASSOCIATION_RETAIN);
- // Do any additional setup after loading the view, typically from a nib.
- }
- - (void)didReceiveMemoryWarning
- {
- [super didReceiveMemoryWarning];
- // Dispose of any resources that can be recreated.
- }
- -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
- {
- NSString* data = objc_getAssociatedObject(alertView, &alertInfoKey);
- NSLog(@"%@",data);
- }
- @end
运行结果:
2013-09-17 14:34:05.902 objc_setAssociatedObject--Test[2561:c07] some info
字符串与数组关联:
- <span style="color:#333333">#import <Foundation/Foundation.h>
- #import <objc/runtime.h>
- int main(int argc, const char * argv[])
- {
- @autoreleasepool {
- // insert code here...
- NSLog(@"Hello, World!");
- static char overviewKey;
- NSArray *array =[[NSArray alloc] initWithObjects:@"One", @"Two", @"Three", nil];
- //为了演示的目的,这里使用initWithFormat:来确保字符串可以被销毁
- NSString * overview = [[NSString alloc] initWithFormat:@"%@",@"First three numbers"];
- objc_setAssociatedObject(array, &overviewKey, overview, OBJC_ASSOCIATION_RETAIN);
- [overview release];
- NSString *associatedObject = (NSString *)objc_getAssociatedObject(array, &overviewKey);
- NSLog(@"associatedObject:%@", associatedObject);
- objc_setAssociatedObject(array, &overviewKey, nil, OBJC_ASSOCIATION_ASSIGN);
- [array release];
- }
- return 0;
- }
- </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
不过,此博客代码少了个%,导致运行结果不同~~