ios13系统

mac2025-03-24  13

最近升级了Xcode11,也使用了ios13,以前的项目好好的,突然在ios13上就闪退了,可能跟xcode版本和ios13都有关系。个人认为xcode11有点不稳定。  

如果闪退报以下错误: 这个问题是由于ios13取消了kvc导致的。

解决办法:可以把如下代码作为NSObject扩展类添加到项目中,引用即可。

+ (void)load{ SEL originalSelector = @selector(doesNotRecognizeSelector:); SEL swizzledSelector = @selector(sw_doesNotRecognizeSelector:); Method originalMethod = class_getClassMethod(self, originalSelector); Method swizzledMethod = class_getClassMethod(self, swizzledSelector); if(class_addMethod(self, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod))){ class_replaceMethod(self, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod)); }else{ method_exchangeImplementations(originalMethod, swizzledMethod); } } + (void)sw_doesNotRecognizeSelector:(SEL)aSelector{ //处理 _LSDefaults 崩溃问题 if([[self description] isEqualToString:@"_LSDefaults"] && (aSelector == @selector(sharedInstance))){ //冷处理... return; } [self sw_doesNotRecognizeSelector:aSelector]; }

用运行时实现方法交换即可  

最新回复(0)