runtime真是一个好东西,尽管是底层的东西,但是写起来只要记住那些方法是做什么的,其实和一般的语言是差不多的。只是他去实现一个东西要写很长的代码,别的语言能直观且简单的实现。
runtime交换方法,可以直接拦截系统的方法,从而走自己的方法。runtime的为分类添加属性,虽然这个是很少用的到,如果想要给某一个类添加属性,可以不用分类,选择extension即可。runtime的归档接档,在MJExtension里面用一个宏则实现了归档接档,那个宏更深的里面的方法,重写了decode和encode使用的runtime。
#define CodingImplementation \
- (instancetype)initWithCoder:(NSCoder *)aDecoder {\
if (self = [super init]) {\
[self decode:aDecoder];\
}\
return self;\
}\
\
- (void)encodeWithCoder:(NSCoder *)aCoder {\
[self encode:aCoder];\
}
要在实际项目中使用到runtime才能真的感受到他更强大的作用吧。
网友评论