美文网首页
IOS runtime 运行时机制,方法欺骗

IOS runtime 运行时机制,方法欺骗

作者: 小暖风 | 来源:发表于2017-12-03 10:56 被阅读33次

问题:使用URLWithString方法实例化NSURL对象时,如果传入参数为空,或者包含中文,会导致实例化失败,但是系统却没有提示。可以通过IOS的运行时机制解决这个问题。

+(void)load{

//本方法编译时执行

//得到函数URLWithString:的指针

Method urlWithStringMethod =class_getClassMethod([NSURL class],NSSelectorFromString(@"URLWithString:"));

//得到函数SHURLWithString:的指针(C方法)

Method SHURLWithString =class_getClassMethod([NSURL class],sel_registerName("SHURLWithString:"));

//交换两个函数的指针,这样,当调用函数URLWithString时就会执行SHURLWithString。

method_exchange Implementations(urlWithStringMethod, SHURLWithString);

}

+(instancetype)SHURLWithString:(NSString*)URLString{

if(URLString && [URLString isKindOfClass:[NSString class]] && URLString.length>0) {

//因为函数的指针已经交换,所以这里想要调用函数URLWithString:,则需要调用SHURLWithString:。

NSURL* url = [NSURL SHURLWithString:URLString];

if(url) {

return url;

}

else{

NSLog(@"异常:%@实例化URL失败",URLString);

NSURL* url = [NSURL SHURLWithString:@"https:www.baidu.com"];

return url;

}

}

else{

NSLog(@"异常:地址为空");

NSURL* url = [NSURL SHURLWithString:@"https:www.baidu.com"];

return url;

}

}

Demo地址https://github.com/SmallHeater/RunTime。

相关文章

  • Runtime(运行时) 入门

    1.什么是Runtime? runtime是iOS 的一种运行时机制. 是iOS ...

  • IOS runtime 运行时机制,方法欺骗

    问题:使用URLWithString方法实例化NSURL对象时,如果传入参数为空,或者包含中文,会导致实例化失败,...

  • iOS---Runtime

    RunTime runtime 是什么 runtime ,运行时机制,是一套底层 C 语言的 API,其为 iOS...

  • iOS runtime 运行时( - 俗谈)

    iOS runtime 运行时( - 俗谈)iOS runtime 运行时( 二 深谈)iOS runtime 运...

  • 使用Runtime的API

    runtime 的运行时机制 runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心...

  • MY_Runtime机制

    Runtime: 运行时机制 OC语言就是运行时机制, 在编译时不检测调用那个方法, 在运行时进行调用方法 ( 一...

  • iOS底层原理——runtime

    runtime runtime 是iOS的运行时,用于实现iOS加载和调用属性和方法。 函数中load方法没有使用...

  • 国内一线互联网公司内部面试题库

    iOS基础 RunTime 1、RunTime简称运行时,就是系统在运行的时候的一些机制,其中最主要的是消息机制。...

  • iOS runtime 运行时( 二 深谈)

    Attention!iOS runtime 运行时( - 俗谈)iOS runtime 运行时( 二 深谈)iOS...

  • runtime-属性与变量

    序言 runtime简称运行时,就是在程序运行时的一些机制,在iOS开发中runtime的特性使得oc这门语言具有...

网友评论

      本文标题:IOS runtime 运行时机制,方法欺骗

      本文链接:https://www.haomeiwen.com/subject/bclabxtx.html