iOS 利用运行时机制给现有类添加属性
来源:互联网 发布:mac部署maven环境变量 编辑:程序博客网 时间:2024/05/16 14:04
本文将介绍如何利用运行时机制动态给现有的类添加属性,分OC和swift两个版本
一 OC版:OC给现有类添加属性只需要利用OC的分类机制就行,给现有类添加一个categery,然后利用runtime的两个api即可做到。现在我们给UIButton 添加一个image属性。
第一步给UIButton提供一个分类在分类的UIButton+Extension.h文件中代码如下
#import <UIKit/UIKit.h>@interface UIButton (Extension)@property (nonatomic,strong)UIImage *image;@end
第二步,在分类的UIButton+Extension.m文件中利用runtime的api给出image的get和set方法.
#import "UIButton+Extension.h"#import <objc/runtime.h>@implementation UIButton (Extension)static const void *zc_image_key = @"zc_image_key";- (void)setImage:(UIImage *)image { if (image != self.image) { //添加新的 objc_setAssociatedObject(self, zc_image_key, image, OBJC_ASSOCIATION_RETAIN_NONATOMIC); }}- (UIImage *)image { return objc_getAssociatedObject(self, zc_image_key);}@end
第三步,使用
UIButton *button = [[UIButton alloc] init]; UIImage *image = [[UIImage alloc] init]; button.image = image;
二:swift版本可以利用extension,UIButton+Extension.swift具体代码如下:
import UIKitextension UIButton { static let zc_image_key = UnsafeRawPointer.init(bitPattern: "zc_image_key".hashValue) var image: UIImage? { set { objc_setAssociatedObject(self, UIButton.zc_image_key, newValue, .OBJC_ASSOCIATION_COPY_NONATOMIC) } get { return objc_getAssociatedObject(self, UIButton.zc_image_key) as? UIImage } }}
0 0
- iOS 利用运行时机制给现有类添加属性
- iOS-利用运行时给分类添加属性
- iOS利用运行时给分类添加属性
- iOS运行时初探-使用运行时机制向Category中添加属性
- iOS运行时初探-使用运行时机制向Category中添加属性
- 使用运行时机制向Category中添加属性
- 使用运行时机制向Category中添加属性
- iOS运行时机制
- Ios 运行时机制
- IOS 利用运行时机制来进行归档解档
- iOS运行时机制之成员和属性,关联对象
- 利用运行时,给已有对象添加属性
- 如何利用运行时给系统分类添加一个属性?
- ios之运行时机制
- ios中运行时机制
- iOS runtime运行时机制
- iOS runtime运行时机制
- iOS runtime 运行时机制
- php生成二维码
- Java算术运算符
- Arduino Uno 红外遥控 接收 和 发射信号 实验 (上)
- JUnit -- 单元测试
- 欢迎使用CSDN-markdown编辑器
- iOS 利用运行时机制给现有类添加属性
- 页面置换算法
- JUnit单元测试
- 指针函数与函数指针的区别
- 在自定义指令中使用NgModelController(Using NgModelController with Custom Directives)
- frame、iframe框架编程
- XMPP协议之Openfire 集群配置【转】
- Android内存泄漏分析实例
- git 简单使用说明