iOS swift objc_setAssociatedObject和objc_getAssociatedObject使用
oc中的AssociationsManager在swift中也是可以实现的 使用方法请看下面一个例子
import UIKit
extension UIButton {
func fk_addAction(FKActionBlock:((UIButton)->Void)?){
//保存block
let key : UnsafeRawPointer! = UnsafeRawPointer.init(bitPattern: "fk_addAction:".hashValue)
objc_setAssociatedObject(self, key, FKActionBlock, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
addTarget(self, action: #selector(itemClick(button:)), for:.touchUpInside)
}
func fk_addAction(FKActionBlock:((UIButton)->Void)? ,for event:Event){
//保存block
let key : UnsafeRawPointer! = UnsafeRawPointer.init(bitPattern: "fk_addAction:".hashValue)
objc_setAssociatedObject(self, key, FKActionBlock, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
addTarget(self, action: #selector(itemClick(button:)), for:event)
}
@objc private func itemClick(button:UIButton){
let key : UnsafeRawPointer! = UnsafeRawPointer.init(bitPattern: "fk_addAction:".hashValue)
objc_getAssociatedObject(self, key)
if let fkBlock = objc_getAssociatedObject(self, key) as? ((UIButton)->Void){
fkBlock(button)
}
}
}
这里是给UIButton添加一个分类,在分类中给UIButton拓展快速添加点击事件的方法通过block回传,通过objc_setAssociatedObject将block保存,触发点击事件后,通过objc_getAssociatedObject获取之前保存的block发起回调
iOS swift objc_setAssociatedObject和objc_getAssociatedObject使用的更多相关文章
- iOS ---Swift学习与复习
swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ...
- iOS swift的xcworkspace多项目管理(架构思想)
iOS swift的xcworkspace多项目管理(架构思想) 技术说明: 今天在这里分享 swift下的 xcworkspace多项目管理(架构思想),能为我们在开发中带来哪些便捷?能为我们对整 ...
- iOS Swift 模块练习/swift基础学习
SWIFT项目练习 SWIFT项目练习2 iOS Swift基础知识代码 推荐:Swift学习使用知识代码软件 0.swift中的宏定义(使用方法代替宏) 一.视图 +控件 1.UIImag ...
- ios swift 实现饼状图进度条,swift环形进度条
ios swift 实现饼状图进度条 // // ProgressControl.swift // L02MyProgressControl // // Created by plter on 7/2 ...
- Building gRPC Client iOS Swift Note Taking App
gRPC is an universal remote procedure call framework developed by Google that has been gaining inter ...
- iOS Swift WisdomScanKit图片浏览器功能SDK
iOS Swift WisdomScanKit图片浏览器功能SDK使用 一:简介 WisdomScanKit 由 Swift4.2版编写,完全兼容OC项目调用. WisdomScanKit的 ...
- iOS Swift WisdomScanKit二维码扫码SDK,自定义全屏拍照SDK,系统相册图片浏览,编辑SDK
iOS Swift WisdomScanKit 是一款强大的集二维码扫码,自定义全屏拍照,系统相册图片编辑多选和系统相册图片浏览功能于一身的 Framework SDK [1]前言: 今天给大家 ...
- iOS Swift WisdomHUD 提示界面框架
iOS Swift WisdomHUD 提示界面框架 Framework Use profile(应用简介) 一:WisdomHUD简介 今天给大家介绍一款iOS的界面显示器:WisdomHUD,W ...
- iOS Swift WisdomKeyboardKing 键盘智能管家SDK
iOS Swift WisdomKeyboardKing 键盘智能管家SDK [1]前言: 今天给大家推荐个好用的开源框架:WisdomKeyboardKing,方面iOS日常开发,优点和功能请 ...
随机推荐
- jenkins新手入门教程
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. 虽然jenkins提供了Window.Lin ...
- Codeforces 1029 E. Tree with Small Distances(树上dp)
题目直通车:http://codeforces.com/problemset/problem/1029/E 思路大意:在树上做dp,依次更新ar数组,ar[i]表示以i为根节点的子树对答案的最小贡献值 ...
- 小程序redirectTo不跳转
微信小程序解决方案专辑:http://www.wxapp-union.com/special/solution.html 上面有很多新手坑,多搜搜一般都有. 举个例子: redirectTo不跳转的原 ...
- linux mysql cluser集群
管理节点的安装与启动 config.init内容如下 [NDBD DEFAULT] NoOfReplicas=1 #定义在Cluster环境中相同数据的份数,最大为4 [NDB_MGMD] #设置管理 ...
- Android Facebook分享功能实现
1.下载 Facebook SDK https://developers.facebook.com/docs/Android?locale=zh_CN 2.在facebook下设置app的相关信息 3 ...
- [置顶]
kubernetes资源类型--secret和Service Account
secret 概念 secret对象类型主要目的是保存和处理敏感信息/私密数据,比如密码,OAuth tokens,ssh keys等信息.将这些信息放在secret对象中比 直接放在pod或dock ...
- linux 远程同步数据工具rsync (1)
rsync 远程同步数据工具,是linux下的数据备份工具rsync(remote sync 远程同步) 特点:在本地同步数据(类似于cp,但是有不同于远程scp),它会先判断已经存在的数据和远程数据 ...
- Myeclipse 编译等级
1.Java compiler level does not match the version of the installed Java project facet. 问题描述:编译等级不匹配 解 ...
- 跟我一起透彻理解template模板模式
#include <iostream> using namespace std; //template模式. class Base { public: void DealWhat() { ...
- Java 7 新功能: 省略finally, 保证资源正常关闭
class MyResource implements Closeable{ @Override public void close() throw IOException{ } } try( myR ...