runtime objc.h

2020-08-20  本文已影响0人  想聽丿伱說衹愛我

版本:iOS13.5

objc.h

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

索引

详解

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 返回对应名称的方法的选择器。

上一篇 下一篇

猜你喜欢

热点阅读