美文网首页
runtime objc.h

runtime objc.h

作者: 想聽丿伱說衹愛我 | 来源:发表于2020-08-20 10:30 被阅读0次

版本:iOS13.5

objc.h

需要引入头文件#import <objc/objc.h>
runtime其他方法通道

索引

  • 返回选择器的方法的名称。
    sel_getName
  • 注册一个方法并映射到选择器。
    sel_registerName
  • 返回对象的类名称。
    object_getClassName
  • 返回指针,指向为对象分配的所有额外字节。
    object_getIndexedIvars
  • 判断选择器是否有效。
    sel_isMapped
  • 在运行时中注册方法名称。
    sel_getUid

详解

  • 返回选择器的方法的名称。
const char * _Nonnull sel_getName(SEL _Nonnull sel)

效果与runtimesel_getName相同

  • 注册一个方法并映射到选择器。
SEL _Nonnull sel_registerName(const char * _Nonnull str)

效果与runtimesel_registerName相同

  • 返回对象的类名称。
const char * _Nonnull object_getClassName(id _Nullable obj)

相当于class_getName(object_getClass(obj))

  • 返回指针,指向为对象分配的所有额外字节。
void * _Nullable object_getIndexedIvars(id _Nullable obj)

使用runtime中的class_createInstance创建实例且当extraBytes大于0时,该方法返回的指针则指向extraBytes的位置,而此处会排队放着一个个Ivar变量。

  • 判断选择器是否有效。
BOOL sel_isMapped(SEL _Nonnull sel)

BOOL 如果选择器有效且具有函数实现则返回YES,否则返回NO。

例:
    BOOL mapped = sel_isMapped(NSSelectorFromString(@"a"));
    BOOL mapped1 = sel_isMapped(@selector(asdfadskljfladksjfakldsj));
    NSLog(@"%@ %@", @(mapped), @(mapped1));

- (void)a {
    NSLog(@"aaa");
}
输出:asdfadskljfladksjfakldsj并没有实现,但还是返回为YES,不知为何。
1 1
  • 在运行时中注册方法名称。
 SEL _Nonnull sel_getUid(const char * _Nonnull str)

该方法与sel_registerName效果相同

SEL 返回对应名称的方法的选择器。

相关文章

  • runtime objc.h

    版本:iOS13.5 objc.h 需要引入头文件#import runtime其他方法...

  • 2018-09-10 方法调用流程

    objc.h runtime.h // 查找IMPIMP class_getMethodImplementatio...

  • runtime —— objc.h

    runtime 一个c语言库,OC是C语言的超级,封装,即OC运行时会全部转化为C语言,即runtime的函数库。...

  • Class, Method,SEL, IMP

    Class: 定义在 objc.h: objc_class定义在runtime.h: Method Method ...

  • IMP

    IMP定义在runtime的objc.h中,定义如下: typedef说明形式:typedef 返回类型(新类型...

  • runtime

    runtime知识看这一篇就差不多了 1、类是什么样子的? objc.h中这么描述的: /// An opaque...

  • Runtime 1 objc.h 头文件

    (写一个系列聊一聊runtime源码 希望不错过一些小的细节 然后一点一点深入解说,不知道自己能坚持多久) (采用...

  • 2016笔记——Runtime(三)

    要深层次了解runtime运行时的机制,就要先了解类和对象的内部结构。 一、从objc.h中找到对object和c...

  • iOS开发中Runtime.h / objc.h / messa

  • 一、objc库

    一、objc.h objc.h中定义的几个基本类型 objc_object具体结构 好了,有了这些最基本的东西,看...

网友评论

      本文标题:runtime objc.h

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