zoukankan      html  css  js  c++  java
  • objc_setAssociatedObject

    学习笔记:通过 objc_setAssociatedObject alert 和 button关联 及传值

    标签: ios
     分类:

     

     


     

    //唯一静态变量key

    static const char associatedkey;

    static const char associatedButtonkey;

     

    - (IBAction)sendAlert:(id)sender

    {

        

        NSString *message =@"我知道你是按钮了";

        

        UIAlertView *alert = [[UIAlertViewalloc]initWithTitle:@"提示"message:@"我要传值·" delegate:selfcancelButtonTitle:@"确定" otherButtonTitles:nil];

        alert.delegate =self;

        [alert show];

     

         //#import <objc/runtime.h>头文件

         //objc_setAssociatedObject需要四个参数:源对象,关键字,关联的对象和一个关联策略。

     

         //1 源对象alert

        //2 关键字 唯一静态变量key associatedkey

        //3 关联的对象 sender

        //4 关键策略  OBJC_ASSOCIATION_RETAIN_NONATOMIC

        

        

        objc_setAssociatedObject(alert, &associatedkey, message,OBJC_ASSOCIATION_RETAIN_NONATOMIC);

        

        objc_setAssociatedObject(alert, &associatedButtonkey, sender,OBJC_ASSOCIATION_RETAIN_NONATOMIC);

        

    }

    -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

    {

        

        

        //通过 objc_getAssociatedObject获取关联对象

        NSString  *messageString =objc_getAssociatedObject(alertView, &associatedkey);

        

        

        UIButton *sender = objc_getAssociatedObject(alertView, &associatedButtonkey);

        

        _labebutton.text = [[sendertitleLabel]text];

        _ThisLabel.text = messageString;

        

        

        //使用函数objc_removeAssociatedObjects可以断开所有关联。通常情况下不建议使用这个函数,因为他会断开所有关联。只有在需要把对象恢复到“原始状态”的时候才会使用这个函数。

    }

    demo http://download.csdn.net/detail/lengshengren/6594365

  • 相关阅读:
    JS对象
    常见简单算法的实现
    JavaScript基础
    CSS3 边框 border-image
    HTTP消息头详解
    apache安装
    常见访问错误整理
    apache虚拟主机配置
    apache配置项
    Windows下使用ssh-add报错 Error connecting to agent: No such file or directory
  • 原文地址:https://www.cnblogs.com/developer-ios/p/5003841.html
Copyright © 2011-2022 走看看