chenfanfang / AvoidCrash

This framework can effective avoid crash by potential error code. For example : If you insert a nil into a mutable array, this framework can avoid crash and note you that where cause crash.
MIT License
1.64k stars 383 forks source link

setupNoneSelClassStringPrefixsArr该方法会导致某些发产生EXC_BREAKPOINT崩溃, #52

Closed hj4859199 closed 4 years ago

hj4859199 commented 6 years ago

noneSelClassPrefix 我在这个数组中添加了某些前缀的类,但是导致运行的时候某些类持续闪退,注释掉setupNoneSelClassStringPrefixsArr就不会崩溃了,请问这是什么原因?

chenfanfang commented 6 years ago

你好,PrefixsArr数组里放了哪些字符串,麻烦贴出你的代码。 由于自带类的某些少数方法的调用是通过最后的转发补救的,所以AvoidCrash有时候会拦截了系统的默认做法,会导致误伤,所以可能会导致你所说的情况。你可以参考下面的链接。

https://github.com/chenfanfang/AvoidCrash/issues/40

同时,请贴出你的代码,给大家借鉴一下哪些情况会出现这样的问题,也方便AvoidCrash进行改进,谢谢

hj4859199 commented 6 years ago

下面是我在AppDelegate调用的方法 NSArray *noneSelClassPrefix = @[ @"IM", @"Project", @"Attend", @"Report", @"Labor", @"Quality", @"Contract", @"Bill" ]; [AvoidCrash setupNoneSelClassStringPrefixsArr:noneSelClassPrefix]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dealwithCrashMessage:) name:AvoidCrashNotification object:nil];

其中Attend对应的AttendanceSignInVC和AttendanceLocusDetailVC的两个类, Project对应的ProjectHomePageViewController类运行就会闪退,出现EXC_BREAKPOINT错误

chenfanfang commented 6 years ago

@hj4859199 抱歉,目前AvoidCrash对 “unrecognized selector sent to instance”的兼容并不是非常完善,建议不要填入 UIKit中的类或者子类,也不要加入NSObject(可以加入继承于NSObject的子类)。

unrecognized selector sent to instance 一般用来对数据的处理比较多,建议直接使用如下代码(只针对数据的处理)

NSArray *noneSelClassStrings = @[ @"NSNull", @"NSNumber", @"NSString", @"NSDictionary", @"NSArray" ]; [AvoidCrash setupNoneSelClassStringsArr:noneSelClassStrings];

对于AvoidCrash给你带来的困扰,在此表示抱歉。