为什么80%的码农都做不了架构师?>>>   

-(void)click:(UIButton *)sender
{NSString *message = @"你是谁";UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"我要传值·" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil];alert.delegate = self;[alert show];//#import <objc/runtime.h>头文件//objc_setAssociatedObject需要四个参数:源对象,关键字,关联的对象和一个关联策略。//1 源对象alert//2 关键字 唯一静态变量key associatedkey//3 关联的对象 sender//4 关键策略  OBJC_ASSOCIATION_ASSIGN
//    enum {
//        OBJC_ASSOCIATION_ASSIGN = 0,           若引用/**< Specifies a weak reference to the associated object. */
//        OBJC_ASSOCIATION_RETAIN_NONATOMIC = 1, /**< Specifies a strong reference to the associated object.
//                                                *   The association is not made atomically. */
//        OBJC_ASSOCIATION_COPY_NONATOMIC = 3,   /**< Specifies that the associated object is copied.
//                                                *   The association is not made atomically. */
//        OBJC_ASSOCIATION_RETAIN = 01401,       /**< Specifies a strong reference to the associated object.
//                                                *   The association is made atomically. */
//        OBJC_ASSOCIATION_COPY = 01403          /**< Specifies that the associated object is copied.
//                                                *   The association is made atomically. */
//    };objc_setAssociatedObject(alert, @"msgstr", message,OBJC_ASSOCIATION_ASSIGN);//把alert和message字符串关联起来,作为alertview的一部分,关键词就是msgstr,之后可以使用objc_getAssociatedObject从alertview中获取到所关联的对象,便可以访问message或者btn了//    即实现了关联传值objc_setAssociatedObject(alert, @"btn property",sender,OBJC_ASSOCIATION_ASSIGN);
}
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{//通过 objc_getAssociatedObject获取关联对象NSString  *messageString =objc_getAssociatedObject(alertView, @"msgstr");UIButton *sender = objc_getAssociatedObject(alertView, @"btn property");NSLog(@"%ld",buttonIndex);NSLog(@"%@",messageString);NSLog(@"%@",[[sender titleLabel] text]);//使用函数objc_removeAssociatedObjects可以断开所有关联。通常情况下不建议使用这个函数,因为他会断开所有关联。只有在需要把对象恢复到“原始状态”的时候才会使用这个函数。
}

转载于:https://my.oschina.net/sfandy/blog/655022

runtime的常用方法objc_setAssociatedObject的使用相关推荐

  1. runtime 关联对象objc_setAssociatedObject

    有许多人不知道runtime 黑魔法到底是干啥用的,到底有什么卵用,今天我们就来讲讲runtime - 关联对象objc_setAssociatedObject 的使用. 惯例美女大图一张,拿去撸!不 ...

  2. Java常用类之【Math类、Random类、System类、Runtime类】

    一.Math类 Math类 [绝对值]Math.abs();//返回对应类型的绝对值 [最大值和最小值]Math.max(int a, int b) ,Math.min(int a,int b);(其 ...

  3. 2018-05-31 第二十五天

    一.File练习 package com.javase.day17; import java.io.File; import java.io.IOException; import java.text ...

  4. iOS 关联对象的实现原理

    文章目录 前言 一般使用 void objc_setAssociatedObject objc_getAssociatedObject 关联对象的实现原理 核心对象 核心对象之间的关系 runtime ...

  5. iOS面试问题全面梳理 --持续更新

    序言 目前,参加到iOS队伍的人是越来越多,形势不容乐观.为iOS应聘者梳理一下面试题,希望能助一臂之力! OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装.继承.多态. ...

  6. Runtime类及其常用方法

    每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.可以通过 getRuntime 方法获取当前运行时. 常用方法: 1.public static Runt ...

  7. iOS模式详解runtime面试工作

    简书:http://www.jianshu.com/p/19f280afcb24 对于从事 iOS 开发人员来说,所有的人都会答出「runtime 是运行时」,什么情况下用runtime?,大部分人能 ...

  8. objc runtime 动态增加属性

    objective-c中,有类别可以在不修改源码的基础上增加方法 使用运行时库,必须要先引入 objc/runtime.h 可以使用的函数如下: OBJC_EXPORT void objc_setAs ...

  9. Java学习总结:32(Runtime类)

    Runtime类 该类用于表示虚拟机(JVM)运行时的状态,每次启动JVM都对应一个Runtime实例,且只有一个实例,利用Runtime类可以启动新的进程或进行相关运行时环境的操作.此外,该类采用单 ...

最新文章

  1. 是时候了解一下Serverless了
  2. python3.4.4怎么打代码_Python3.4里面__name和__main__的作用
  3. MongoDB基本概念学习 - 文档
  4. 解除被DenyHosts锁定的IP地址
  5. Java与Python:哪一个最适合您? [信息图]
  6. 解释型语言和编译型语言的区别_从泛型的使用情况看出你对语言的理解程度(2)...
  7. phpcms首页:调用全站所有tags关键字 - tags总结篇
  8. C++ 静态成员变量静态成员函数
  9. python word 英语音标_(完整word版)英语音标大全,推荐文档
  10. 中文字体下载大全+传世书法墨迹珍藏..等20款
  11. word去掉标题前面的黑点
  12. RESTful API入门学习笔记
  13. wincap网络数据包的捕获
  14. 如何把大写金额变为小写数字_excel怎么把小写数字转换成人民币大写?
  15. java el if_EL 表达式中条件运算符用于执行某种条件判断,它类似于 Java 语言中的 if-else 语句 。 ( )_学小易找答案...
  16. 科技云报道:新基建已到来,网络安全建设跟上了吗?
  17. iOS-高德地图点击地图获取点击点对应的地理位置,并添加自定义的大头针
  18. Kali linux 学习笔记(四十一)Web渗透——扫描工具之w3af 2020.3.18
  19. Java即时编译器原理解析及实践
  20. python colorbar字体大小_如何更改colorbar上基数和指数的字体大小?

热门文章

  1. python的用途实例-Python实例方法、类方法、静态方法的区别与作用详解
  2. python学精通要多久-零基础零经验自学Python,到精通Python要多久啊?
  3. Databricks基本操作
  4. 网络编程学习笔记(getsockopt和setsockopt函数)
  5. rest-framework:认证组件
  6. CF 976F 递增容量最大流
  7. mysql之存储引擎的选择
  8. java的collection集合
  9. P1991 无线通讯网
  10. saltstack/salt的state.sls的使用