objc_setAssociatedObject通过alert传值

来源:互联网 发布:易语言ui界面源码 编辑:程序博客网 时间:2024/06/07 00:36

转载请标明出处

欢迎交流

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


 字符串与数组关联:


#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;}


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

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


 


原创粉丝点击