当前位置: 首页 > news >正文

互助资金盘网站开发网页设计模板素材网站大全

互助资金盘网站开发,网页设计模板素材网站大全,网站设计的基本流程是什么,邵阳市住房和建设局网站一、runtime的动态性 OC的运行时系统(Runtime System)提供了丰富的动态特性,包括类与对象的创建、消息发送与转发、方法的动态添加与替换、属性的动态合成等。通过使用运行时库提供的API,可以在运行时获取和操作类与对象的信息,实现各种动态性的功能。 我对 Runtime 的理…

一、runtime的动态性

OC的运行时系统(Runtime System)提供了丰富的动态特性,包括类与对象的创建、消息发送与转发、方法的动态添加与替换、属性的动态合成等。通过使用运行时库提供的API,可以在运行时获取和操作类与对象的信息,实现各种动态性的功能。

 我对 Runtime 的理解是,它是 Objective-C 语言的核心之一,为我们提供了一种在程序运行时动态操作类和对象的能力。通过 Runtime,我们可以在不修改源代码的情况下,实现诸如动态创建类、添加成员变量、调用方法、交换方法实现等功能,从而实现更灵活、更动态的编程方式。

二、应用场景

1、实现Runtime在分类创建属性(添加关联对象)

当使用 Objective-C 的分类来添加属性时,通常情况下是无法直接在分类中声明实例变量的,因为分类不允许添加实例变量。但是,我们可以利用 Runtime 来实现在分类中添加属性的功能,具体步骤如下:

  1. 定义关联的键值:为了关联属性和其对应的存取方法,需要定义一个全局唯一的键值。

  2. 实现属性的 getter 和 setter 方法:在分类中实现属性的 getter 和 setter 方法,这些方法将通过 Runtime 添加到分类中。

  3. 使用 Runtime 添加属性:在分类的实现文件中,通过 Runtime 的函数来动态地为类添加属性。

下面是一个示例代码,演示了如何使用 Runtime 在分类中添加属性:

#import <objc/runtime.h>// 定义关联的键值
static char kAssociatedObjectKey;@interface NSObject (MyCategory)// 声明属性
@property (nonatomic, strong) NSString *myProperty;@end@implementation NSObject (MyCategory)// 实现属性的 getter 方法
- (NSString *)myProperty {// 使用关联对象获取属性值return objc_getAssociatedObject(self, &kAssociatedObjectKey);
}// 实现属性的 setter 方法
- (void)setMyProperty:(NSString *)myProperty {// 使用关联对象设置属性值objc_setAssociatedObject(self, &kAssociatedObjectKey, myProperty, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}@end

2--黑魔法:交换方法用于统一处理某个方法

管理类方法.h

#import <Foundation/Foundation.h>@interface AARunTimeUtility : NSObject
/**交换实例方法@param cls 当前class@param originalSelector originalSelector description@param swizzledSelector swizzledSelector description@return 返回*/
+ (BOOL)swizzlingInstanceMethodInClass:(Class)cls originalSelector:(SEL)originalSelector swizzledSelector:(SEL)swizzledSelector;/**交换类方法@param cls 当前class@param originalSelector originalSelector description@param swizzledSelector swizzledSelector description@return 成*/
+ (BOOL)swizzlingClassMethodInClass:(Class)cls originalSelector:(SEL)originalSelector swizzledSelector:(SEL)swizzledSelector;@end

.m文件

#import "AARunTimeUtility.h"
#import <objc/runtime.h>@implementation AARunTimeUtility+ (BOOL)swizzlingInstanceMethodInClass:(Class)cls originalSelector:(SEL)originalSelector swizzledSelector:(SEL)swizzledSelector
{Class class = cls;Method originalMethod = class_getInstanceMethod(class, originalSelector);Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector);BOOL didAddMethod = class_addMethod(class, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod));if (didAddMethod){class_replaceMethod(class, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod));}else{method_exchangeImplementations(originalMethod, swizzledMethod);}return didAddMethod;
}+ (BOOL)swizzlingClassMethodInClass:(Class)cls originalSelector:(SEL)origi
http://www.yayakq.cn/news/650654/

相关文章:

  • 免费建站并且绑定域名微信h5网站模板下载
  • 物业服务网站建设绍兴建设银行网站首页
  • 徐州网站制作方法天津商业网站建设
  • 旅游网站排行榜前十名官网做的好的网站开发
  • 惠州企业网站建设公司网站商城怎么做的
  • 网站建设一六八互联wordpress 回复显示
  • 网站建设技术流程设迹官网
  • 北京商城网站建设律师事务所 网站模板
  • 怎么用word做网站网络规划设计师考试全程指导(第2版) pdf
  • 网站域名最便宜阿里云云虚拟主机
  • 优化大师卸载不了山东网站seo开发
  • 临海商用高端网站设计新感觉建站网站续费要多少钱
  • 2017网站设计尺寸萝岗门户网站建设
  • android直播app开发山西seo优化
  • 房地产公司网站建设方案pc 手机站网站制作
  • 织梦网站主页地址更改某企业集团网站建设方案论文
  • 网站建站平台开发服务服务采购公告黑龙江省住房和建设厅网站首页
  • 做做做做网站做网站应该学什么
  • 吉林省住房城乡建设厅网站首页网站建设项目验收报告
  • 网站建设内容保障制度郭仓镇做网站
  • 网络营销和传统营销有什么区别广州推广优化
  • 海口网站建设找薇ls15227广州网站设计制作公司有哪些
  • 把自己做的网页发布到网站装饰工程 技术支持 东莞网站建设
  • 做网站 单页数量手机传奇开服网
  • 鄂州网站建设哪家好学院门户网站建设
  • 专业群建设 网站wordpress固定连接只能访问首页
  • 极客网站建设好便宜建站
  • wordpress主题站模板下载如何建立自己的网站免费
  • 网站建设服务器在国外如何打击深圳网站建设raygf
  • 织梦网站如何做301跳转门户网站集约化建设