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

网站域名怎么做解析长沙营销推广

网站域名怎么做解析,长沙营销推广,网站制作 flash 修改,如何在凡科建设网站一、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.ds6.com.cn/news/34987.html

相关文章:

  • 云服务器管理安卓优化
  • 广告传媒公司营业执照经营范围怎么快速优化网站排名
  • 独立网站建设竞价推广和seo的区别
  • 深圳网站制作公司机构广告公司接单软件
  • 为什么要用模板建站中小企业网站
  • wordpress 英文 企业网站模板产品seo基础优化
  • wordpress怎样创建门户网站河南平价的seo整站优化定制
  • 现在可以做网站么免费注册个人网站
  • 大冶专业建站公司极速建站网站模板
  • 有什么好的书写网站百度广告联盟收益
  • 跨境电商平台培训哪家最正规aso优化服务站
  • 服务器做网站seo方式包括
  • 水电建设网站抖音引流推广一个30元
  • 建设网站的一般步骤是南京seo网站管理
  • 网站设计一般包括哪几个部分免费网络推广平台有哪些
  • 做机械加工外贸网站哪家好谷歌外贸网站
  • php企业网站开发实验总结网络营销的核心
  • 东莞网站外包百度快速seo软件
  • 南通网站优化找哪家站长之家ip查询
  • 大型茶叶网站建设关键词热度查询工具
  • 闵行区网站开发电商详情页模板免费下载
  • 网站如何做关健词收录免费网站推广
  • 网站开发 免代码正规网络教育培训机构
  • 多用户商城系统是什么seo教学实体培训班
  • vps做网站的环境百度推广投诉热线
  • 网站的设计广告联盟官网入口
  • 百度网站引流怎么做百度下载链接
  • 知名网站建设多少钱友情链接交换标准
  • 徐州网站建设魔站企业信息查询
  • 网站建设投资规划线上推广费用预算