斗地主怎样记牌|宋小宝斗地主搞笑视频
登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

JJException 0.1.3

[复制链接]
来自: jezz 分类: iOS精品源码 上传时间: 2018-11-11 17:50:41
Tag:

项目介绍:

JJException

保护App,一般常见的问题不会导致闪退,增强App的健壮性,同时会将错误?#22766;?#26469;,根据每个App自身的日志渠道记录,下次迭代或者热修复以下问题.

  • Unrecognized Selector Sent to Instance(方法不存在异常)

  • NSNull(方法不存在异常)

  • NSArray,NSMutableArray,NSDictonary,NSMutableDictionary(数组越界,key-value?#38382;?#24322;常)

  • KVO(忘记移除keypath导致闪退)

  • Zombie Pointer(野指针)

  • NSTimer(忘记移除导致内存泄漏)

  • NSNotification(忘记移除导致异常)

  • NSString,NSMutableString,NSAttributedString,NSMutableAttributedString(下标越界以?#23433;问齨il异常)

如何安装

Requirements

  • iOS 8.0+

  • OSX 10.7+

  • Xcode 8.0+

Podfile

pod 'JJException'

Cartfile

github "jezzmemo/JJException"

手动导入代码

导入Source文件夹里所有文件,需要将MRC目录下所有.m文件,编译选项更改成-fno-objc-arc

如何使用

  • 所有异常的分类,根据自身需要,自由组合,__如果没用到Zombie功能,建议使用JJExceptionGuardAllExceptZombie__

typedef NS_OPTIONS(NSInteger,JJExceptionGuardCategory){
    JJExceptionGuardNone = 0,
    JJExceptionGuardUnrecognizedSelector = 1 << 1,
    JJExceptionGuardDictionaryContainer = 1 << 2,
    JJExceptionGuardArrayContainer = 1 << 3,
    JJExceptionGuardZombie = 1 << 4,
    JJExceptionGuardKVOCrash = 1 << 5,
    JJExceptionGuardNSTimer = 1 << 6,
    JJExceptionGuardNSNotificationCenter = 1 << 7,
    JJExceptionGuardNSStringContainer = 1 << 8,
    JJExceptionGuardAllExceptZombie = JJExceptionGuardUnrecognizedSelector | JJExceptionGuardDictionaryContainer | JJExceptionGuardArrayContainer | JJExceptionGuardKVOCrash | JJExceptionGuardNSTimer | JJExceptionGuardNSNotificationCenter | JJExceptionGuardNSStringContainer,
    JJExceptionGuardAll = JJExceptionGuardUnrecognizedSelector | JJExceptionGuardDictionaryContainer | JJExceptionGuardArrayContainer | JJExceptionGuardZombie | JJExceptionGuardKVOCrash | JJExceptionGuardNSTimer | JJExceptionGuardNSNotificationCenter | JJExceptionGuardNSStringContainer,
};
  • 设置异常类型并开启,__建议放在didFinishLaunchingWithOptions第一行,以免在多线?#22363;?#29616;异常的情况__

    [JJException configExceptionCategory:JJExceptionGuardAll];
    [JJException startGuardException];
  • 实时关闭保护

    [JJException stopGuardException];
  • 当异常时,默认程序不会中断,如果需要遇到异常时退出,需要如下设置:

    //Default value:NO
    JJException.exceptionWhenTerminate = YES;
  • Zombie使用黑名单机制,只有加入这个名单的才有作用,示例如下:

    [JJException addZombieObjectArray:@[TestZombie.class]];
  • 如果需要记录日志,只需要实现JJExceptionHandle协议,并注册:

@interface ViewController ()<JJExceptionHandle>

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [JJException registerExceptionHandle:self];
}

- (void)handleCrashException:(NSString*)exceptionMessage exceptionCategory:(JJExceptionGuardCategory)exceptionCategory extraInfo:(nullable NSDictionary*)info{

}

FAQ

是否影响上线App Store

不会的,JJException的功能都是使用的官方API,没有任何私有API

保护App的实现技术原理是什么?

JJException技术原理

JJException是否和Bugly和友盟等第三方库是否有冲突?

Bugly和友盟是记录Crash Bug的log还有一些统计功能,JJException主要是通过Hook技术来实现,所以不会和JJException冲突

如何上传异常信息到Bugly?

Bugly可以帮我们解决重复信息和CallStack信息,以及状态维护。
实现JJExceptionHandle协议后,将异常信息组织成Error,然后用[Bugly reportError:error]上传异常信息,上传后异常信息Bugly的后台错误分析菜单里

Swift是否有作用

是有作用的,Swift有些API实现是独立实?#20540;模?#27604;如String,Array,用结构体的方式,但是有些还是沿用了Objective-c,凡是沿用Objective-c的特性的,JJException还是生效的,下面我来列下还依然生效的功能点:

  • Unrecognized Selector Sent to Instance

  • NSNull

  • KVO

  • NSNotification

  • NSString,NSMutableString,NSAttributedString,NSMutableAttributedString(__注意不是String__)

  • NSArray,NSMutableArray,NSDictonary,NSMutableDictionary(__注意不是Array__)

  • Zombie Pointer

这里贴下Swift的初始化代码示例:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    self.registerJJException()
    return true
}
    
func registerJJException(){
    JJException.configExceptionCategory(.allExceptZombie)
    JJException.startGuard()
    JJException.register(self);
}
    
func handleCrashException(_ exceptionMessage: String, extraInfo info: [AnyHashable : Any]?) {
        
}

https://github.com/jezzmemo/JJException

相关源码推荐:

我来说两句
*滑动验证:
所有评论(15)
inta加加 2018-11-12 10:08:43
我是来学习的
回复
乱世佳人520 2018-11-12 10:08:47
?#34892;?#20998;享,楼主V5~
回复
ff12345 2018-11-12 10:09:22
支持,?#34892;唬?#31069;code4app越来越好~
回复
AlonMessi 2018-11-12 10:10:00
帮帮顶顶!!
回复
littleRed 2018-11-12 10:10:57
小弟学习了~支持,支持
回复
t8569 2018-11-12 10:11:19
不错不错,楼主辛苦了。。。
回复
code4app热心网友 2018-11-13 14:22:07
学习学习!
回复
code4app热心网友 2018-11-14 12:07:40
淡定,淡定,淡定……
回复
code4app热心网友 2018-11-14 12:07:56
楼主威武啊,Code4App有你更给力!
回复
12下一页
提取码:  下载?#38382;? 状态:已购或VIP 售价:0(原价:15)金钱 下载权限:初级码农 
779 0 3
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡?#23376;?#38596;榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
[email protected]
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 广东互联网违法和不?#22841;?#24687;举报?#34892;?/a>|?#27844;?#20114;联网举报?#34892;?/a>|Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表
斗地主怎样记牌 高速公路之王APP下载 豪华的开心假期注册 埃弗顿vs伯恩利 星际争霸战彩金 海底总动员的影评 英超球队 山东群英会qq群 皇家马德里是什么意思 时时彩五星一码公式 双赢密探游戏